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

E-Mails mit Anhängen in SQL Server (T-SQL) senden

SQL Server bietet uns die Möglichkeit, E-Mails über seine Database Mail-Lösung zu senden. Dazu gehören eine Reihe gespeicherter Prozeduren, die die Konfiguration und das Versenden von E-Mails erleichtern.

Verwenden Sie zum Senden einer E-Mail den sp_send_dbmail gespeicherte Prozedur. Diese Prozedur akzeptiert eine Reihe optionaler Argumente, von denen Ihnen eines das Senden von Anhängen ermöglicht.

Tatsächlich gibt es zwei Argumente, mit denen Sie Anhänge senden können. Welche Sie verwenden, hängt vom Kontext ab.

Sie sind:

  • @file_attachments – Ermöglicht es Ihnen, eine Datei anzugeben, die an die E-Mail angehängt werden soll.
  • @attach_query_result_as_file – Dies gilt nur, wenn Sie auch @query verwenden um die Ergebnisse einer Abfrage per E-Mail zu versenden.

Beispiele unten.

Datei anhängen

Die @file_attachments Mit dem Argument können Sie eine Datei angeben, die an die E-Mail angehängt werden soll.

Hier ist ein Beispiel:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached file contains all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak',
    @subject = 'File attached as discussed';

Der Wert muss den absoluten Pfad zur Datei enthalten.

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

Mehrere Dateien anhängen

Sie können mehrere Dateien anhängen, indem Sie jeden Dateinamen durch ein Semikolon trennen:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached files contain all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak;/var/opt/mssql/bak/World.bak',
    @subject = 'Files attached as discussed';

Wie bereits erwähnt, gilt die Dateigrößenbeschränkung für jede Datei. Wenn also die Dateigrößenbeschränkung 1 MB beträgt, kann jede Datei in diesem Beispiel bis zu 1 MB groß sein (was zu einer Gesamtgröße von 2 MB für beide Anhänge zusammen führt).

Ergebnisse einer Abfrage anhängen

Sie können Datenbank-E-Mail auch verwenden, um das Ergebnis einer Abfrage per E-Mail zu versenden. Dies geschieht mit dem @query Streit. Standardmäßig werden die Ergebnisse im Text der E-Mail aufgelistet, Sie können sie aber auch als Anhang hinzufügen, wenn Sie dies bevorzugen.

Um sie als Anhang hinzuzufügen, legen Sie @attach_query_result_as_file fest Argument mit dem Wert 1 .

Hier ist ein Beispiel für das Senden von Abfrageergebnissen als Anhang:

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';

Beim Versenden von Abfrageergebnissen per E-Mail stehen Ihnen einige Optionen zur Verfügung.

Sie können beispielsweise @query_attachment_filename verwenden um den Dateinamen anzugeben (falls nicht angegeben, wird Datenbank-E-Mail einen erfinden). Sie können auch den @query_result_header verwenden Argument, um anzugeben, ob die Header in der Abfrage enthalten sind oder nicht, und Sie können den @query_result_no_padding verwenden -Argument, um jegliche Auffüllung zu entfernen, die automatisch auf die Ergebnisse angewendet wird.