W SQL Server możesz wysyłać e-maile za pomocą sp_send_dbmail
procedura składowana w msdb Baza danych.
Jednym z wyborów, jakie masz podczas wykonywania tej procedury, jest uwzględnienie wyników zapytania.
Innym wyborem, jaki masz, jest wysłanie tych wyników w załączniku.
Przykład
Aby wysłać wyniki zapytania pocztą e-mail, użyj @query
argument.
Aby dołączyć te wyniki jako załącznik, użyj @attach_query_result_as_file
argument. To akceptuje trochę wartość, domyślnie 0
(bez załącznika).
Aby wysłać wyniki w załączniku, po prostu podaj 1
dla tego argumentu.
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';
Ten przykład wysyła wiadomość e-mail z wynikami załączonymi jako plik .txt plik. Nazwa została automatycznie wygenerowana przez pocztę bazy danych.
Domyślnie maksymalny rozmiar pliku dla załączników to 1 MB na plik, ale możesz to zmienić za pomocą sysmail_configure_sp
procedura składowana.
Podaj nazwę załącznika
Masz również możliwość podania własnego imienia i nazwiska dla załącznika. Możesz to zrobić za pomocą @query_attachment_filename
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',
@subject = 'Query results as discussed';
Więcej opcji
Oto kolejny przykład, który rozwija się w stosunku do poprzedniego. W tym miejscu zamieściłem szereg opcji, które mogą okazać się przydatne podczas wysyłania wyników zapytania jako załącznika do wiadomości e-mail.
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';
Niektóre z nich mają ustawione wartości domyślne, a inne nie. Na przykład zmieniłem @query_result_no_padding
do 1
w celu usunięcia wypełnienia z kolumn. Użyłem również @query_result_separator
aby zmienić separator z domyślnej spacji na przecinek.
sp_send_dbmail
procedura przyjmuje więcej argumentów niż tutaj wymieniłem. Zobacz dokumentację Microsoft, aby uzyskać pełną listę argumentów i ich opisów.
Konfigurowanie poczty bazy danych
W przykładach na tej stronie założono, że już włączono i skonfigurowano pocztę bazy danych.
Jeśli nie masz skonfigurowanej poczty bazy danych, zobacz Jak wysyłać wiadomości e-mail z programu SQL Server. Ten artykuł zawiera przykłady włączania i konfigurowania poczty bazy danych za pomocą T-SQL.