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

So senden Sie die Ergebnisse einer Abfrage in SQL Server (T-SQL) per E-Mail

SQL Server bietet eine einfache Möglichkeit, die Ergebnisse einer Abfrage per E-Mail an sich selbst (oder an jemand anderen) zu senden.

Um E-Mails mit T-SQL zu senden, müssen Sie sp_send_dbmail verwenden gespeicherte Prozedur in der msdb Datenbank. Diese Prozedur akzeptiert viele Argumente, von denen eines der @query ist Streit. Das ist das Argument, das die Ergebnisse Ihrer Abfrage an die E-Mail anhängt.

Beispiel

Hier ist ein einfaches Beispiel, das ein Minimum an Argumenten verwendet:

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',
    @subject = 'Query results as discussed';

Standardmäßig werden die Ergebnisse der Abfrage im Text der E-Mail aufgeführt. Alternativ können Sie sich die Ergebnisse auch als Anhang zusenden lassen.

Polsterung entfernen

Wenn Ihre Ergebnisse mit zu viel Polsterung innerhalb der Spalten formatiert sind, können Sie @query_result_no_padding = 1 verwenden um diese Polsterung zu eliminieren.

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',
    @query_result_no_padding = 1,
    @subject = 'Query results as discussed';

Abfrageergebnisse als Anhang hinzufügen

Sie können den @attach_query_result_as_file verwenden -Argument, um die Abfrageergebnisse als Anhang hinzuzufügen. 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,
    @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';

In diesem Beispiel habe ich einige weitere Argumente hinzugefügt.

Der @query_attachment_filename Mit dem Argument können Sie Ihren eigenen Dateinamen angeben (wenn Sie dieses Argument nicht angeben, erstellt Database Mail einen).

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 T-SQL-Beispiele zum Aktivieren und Konfigurieren von Datenbank-E-Mail. Es dauert nicht lange.