Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Datenbank-E-Mail können Sie in Microsoft SQL Server 2005 E-Mails senden. Verwenden Sie die gespeicherte Prozedur sp_send_dbmail, um E-Mails zu senden. Die für diese Prozedur erforderlichen Argumente sind mit den Argumenten für xp_sendmail vergleichbar. Deshalb ist das Konvertieren einer Prozedur, die xp_sendmail verwendet, in sp_send_dbmail unkompliziert.
Der wichtigste zusätzliche Parameter für sp_send_dbmail ist das optionale Mailprofil, das zum Senden der Nachricht verwendet wird. Zum Erstellen eines Datenbank-E-Mail-Profils verwenden Sie den Assistent zum Konfigurieren von Datenbank-E-Mail oder die gespeicherten Prozeduren von Datenbank-E-Mail. Nur die msdb-Datenbank kann eine Mailhost-Datenbank sein.
So konvertieren Sie eine gespeicherte Prozedur von SQL Mail in Datenbank-E-Mail
Aktivieren Sie Datenbank-E-Mail, falls dies noch nicht geschehen ist. Datenbank-E-Mail aktivieren Sie mit dem Assistent zum Konfigurieren von Datenbank-E-Mail.
Erstellen Sie ein Datenbank-E-Mail-Profil, falls Sie noch kein Profil erstellt haben. Weitere Informationen zum Erstellen eines Datenbank-E-Mail-Profils finden Sie unter Vorgehensweise: Erstellen von privaten Datenbank-Mailprofilen (Transact-SQL).
Ersetzen Sie den Aufruf von xp_sendmail durch einen Aufruf von sp_send_dbmail. Ordnen Sie die Argumente von xp_sendmail wie in der folgenden Tabelle veranschaulicht sp_send_dbmail zu.
| xp_sendmail-Argument | sp_send_dbmail-Argument |
|---|---|
@recipients |
@recipients |
@message |
@body |
@query |
@query |
@attachments |
@file_attachments @query_attachment_filename |
@copy_recipients |
@copy_recipients |
@blind_copy_recipients |
@blind_copy_recipients |
@subject |
@subject |
@type |
N/V |
@attach_results |
@attach_query_result_as_file |
@no_output |
@exclude_query_output |
@no_header |
@query_result_header |
@width |
@query_result_width |
@separator |
@query_result_separator |
@echo_error |
N/V |
@set_user |
N/V |
@dbuse |
@execute_query_database |
Beachten Sie beim Aktualisieren der Prozedur folgende Unterschiede:
- Es sind keine MAPI-Nachrichtentypen verfügbar. Datenbank-E-Mail verwendet Extended MAPI nicht. Deshalb kann der Nachrichtentyp nicht von der gespeicherten Prozedur festgelegt werden.
- Falls der @query-Parameter angegeben ist, werden Fehler von der Abfrage an die Sitzung zurückgegeben, die sp_send_dbmail aufgerufen hat.
- Falls der @query-Parameter angegeben ist, wird die Abfrage als aktueller Benutzer ausgeführt. Die Abfrage kann jedoch gültige Transact-SQL-Anweisungen enthalten, wie z. B. EXECUTE AS-Anweisungen.
- Datenbank-E-Mail unterstützt die folgenden Optionen, die in SQL Mail nicht unterstützt werden:
sp_send_dbmail-Argument Beschreibung @profile_name
Gibt das Mailprofil an, das für die Nachricht verwendet werden soll. Datenbank-E-Mail unterstützt mehrere Profile und mehrere Konten für jedes Profil, um die Zuverlässigkeit und Skalierbarkeit zu optimieren. @profile_name kann ausgelassen werden, wenn ein Standardprofil für die Mailhost-Datenbank oder für den Benutzer, der sp_send_dbmail aufruft, vorhanden ist.
@body_format
Gibt das Format der E-Mail-Nachricht an. Mögliche Formate sind TEXT oder HTML.
@importance
Gibt die Wichtigkeit der E-Mail-Nachricht an.
@sensitivity
Gibt die Vertraulichkeit der E-Mail-Nachricht an.
@query_attachment_filename
Gibt den Dateinamen an, der verwendet werden soll, wenn die Ergebnisse einer Abfrage als Datei angefügt werden. Wenn Sie xp_sendmail @query parameter mit @attach_results= TRUE verwenden, kann mit dem @attachments-Parameter nur eine Datei angegeben werden, die an die E-Mail-Nachricht angefügt werden soll. Für sp_send_dbmail steht sowohl @file_attachments als auch @query_attachment_filename zur Verfügung.
Beispiel
Im folgenden Beispiel wird SQL Mail zum Senden einer Nachricht an danw@Adventure-Works.com verwendet.
EXEC master.dbo.xp_sendmail
@recipients=N'danw@Adventure-Works.com',
@message=N'The master database is full.' ;
Im darauf folgenden Beispiel wird Datenbank-E-Mail sowie das Standardprofil für den aktuellen Benutzer verwendet, um dieselbe Nachricht zu senden:
EXEC msdb.dbo.sp_send_dbmail
@recipients=N'danw@Adventure-Works.com',
@body=N'The master database is full.' ;
Beachten Sie, dass die Prozedur in der msdb-Datenbank ausgeführt wird.
Siehe auch
Konzepte
Andere Ressourcen
sp_send_dbmail (Transact-SQL)
xp_sendmail (Transact-SQL)