Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So senden Sie Abfrageergebnisse per E-Mail als Anhang in SQL Server (T-SQL)

In SQL Server können Sie E-Mails mit sp_send_dbmail senden gespeicherte Prozedur in der msdb Datenbank.

Eine der Wahlmöglichkeiten, die Sie beim Ausführen dieses Verfahrens haben, ist, ob die Ergebnisse einer Abfrage eingeschlossen werden sollen oder nicht.

Sie haben auch die Wahl, ob Sie diese Ergebnisse als Anhang senden möchten oder nicht.

Beispiel

Um die Ergebnisse einer Abfrage per E-Mail zu versenden, verwenden Sie @query Argument.

Um diese Ergebnisse als Anhang anzuhängen, verwenden Sie @attach_query_result_as_file Streit. Dies wird bisschen akzeptiert Wert, wobei der Standardwert 0 ist (für keinen Anhang).

Um die Ergebnisse als Anhang zu versenden, geben Sie einfach eine 1 ein für dieses Argument.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Potential candidates for an Admin job, perhaps?',
    @query = 'SELECT TOP(5) * FROM Artists;',
    @execute_query_database = 'Music',
    @attach_query_result_as_file = 1,
    @subject = 'Query results as discussed';

Dieses Beispiel sendet eine E-Mail mit den Ergebnissen im Anhang als .txt Datei. Der Name wurde automatisch von Database Mail generiert.

Standardmäßig beträgt die maximale Dateigröße für Anhänge 1 MB pro Datei, aber Sie können dies mit sysmail_configure_sp ändern gespeicherte Prozedur.

Geben Sie einen Namen für den Anhang an

Sie haben auch die Möglichkeit, einen eigenen Namen für den Anhang anzugeben. Sie können dies mit dem @query_attachment_filename tun Streit.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Potential candidates for an Admin job, perhaps?',
    @query = 'SELECT TOP(5) * FROM Artists;',
    @execute_query_database = 'Music',
    @attach_query_result_as_file = 1,
    @query_attachment_filename = 'Artists.csv',
    @subject = 'Query results as discussed';

Weitere Optionen

Hier ist ein weiteres Beispiel, das das vorherige erweitert. Hier habe ich eine Reihe von Optionen eingefügt, die Sie beim Senden von Abfrageergebnissen als E-Mail-Anhang nützlich finden könnten.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Potential candidates for an Admin job, perhaps?',
    @query = 'SELECT TOP(5) * FROM Artists;',
    @execute_query_database = 'Music',
    @attach_query_result_as_file = 1,
    @query_attachment_filename = 'Artists.csv',
    @query_result_header = 1,
    @query_result_width = 256,
    @query_result_separator = ',',
    @exclude_query_output = 1,
    @append_query_error = 1,
    @query_no_truncate = 0,
    @query_result_no_padding = 1,
    @subject = 'Query results as discussed';

Einige davon sind auf ihren Standardwert eingestellt und andere nicht. Zum Beispiel habe ich @query_result_no_padding geändert zu 1 um Polsterung aus den Spalten zu entfernen. Ich habe auch @query_result_separator verwendet um das Trennzeichen vom Standard-Leerzeichen in ein Komma zu ändern.

Die sp_send_dbmail Die Prozedur akzeptiert mehr Argumente, als ich hier aufgelistet habe. Eine vollständige Liste der Argumente und ihrer Beschreibungen finden Sie in der Dokumentation von Microsoft.

Datenbank-E-Mail konfigurieren

Bei den Beispielen auf dieser Seite wird davon ausgegangen, dass Sie Datenbank-E-Mail bereits aktiviert und konfiguriert haben.

Wenn Sie Datenbank-E-Mail nicht konfiguriert haben, finden Sie weitere Informationen unter So senden Sie E-Mails von SQL Server. Dieser Artikel enthält Beispiele zum Aktivieren und Konfigurieren von Datenbank-E-Mail mit T-SQL.