SQL Server zapewnia nam możliwość wysyłania wiadomości e-mail za pośrednictwem rozwiązania Database Mail. Obejmuje to szereg procedur przechowywanych, które ułatwiają konfigurację i wysyłanie wiadomości e-mail.
Aby wysłać wiadomość e-mail, użyj sp_send_dbmail
procedura składowana. Ta procedura akceptuje kilka opcjonalnych argumentów, z których jeden umożliwia wysyłanie załączników.
Właściwie istnieją dwa argumenty, które umożliwiają wysyłanie załączników. Ten, którego użyjesz, będzie zależał od kontekstu.
Są to:
@file_attachments
– Pozwala określić plik do załączenia do wiadomości e-mail.@attach_query_result_as_file
– Ma to zastosowanie tylko wtedy, gdy używasz również@query
wysłać e-mailem wyniki zapytania.
Przykłady poniżej.
Załącz plik
@file_attachments
argument pozwala określić plik do załączenia do wiadomości e-mail.
Oto przykład:
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';
Wartość musi zawierać bezwzględną ścieżkę do pliku.
Domyślnie maksymalny rozmiar pliku to 1 MB na plik, ale można to zmienić za pomocą sysmail_configure_sp
procedura składowana.
Dołącz wiele plików
Możesz dołączyć wiele plików, oddzielając każdą nazwę pliku średnikiem:
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';
Jak wspomniano, limit rozmiaru pliku dotyczy każdego pliku. Jeśli więc limit rozmiaru pliku wynosi 1 MB, każdy plik w tym przykładzie może mieć do 1 MB (co daje łączny rozmiar 2 MB dla obu załączników łącznie).
Załącz wyniki zapytania
Możesz również użyć poczty bazy danych, aby wysłać wiadomość e-mail z wynikiem zapytania. Odbywa się to za pomocą @query
argument. Domyślnie wyniki są wymienione w treści wiadomości e-mail, ale jeśli wolisz, możesz dodać je jako załącznik.
Aby dodać je jako załącznik, ustaw @attach_query_result_as_file
argument o wartości 1
.
Oto przykład wysyłania wyników zapytania jako załącznika:
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';
Istnieje kilka opcji dostępnych podczas wysyłania wyników zapytania w wiadomości e-mail.
Na przykład możesz użyć @query_attachment_filename
aby określić nazwę pliku (jeśli nie zostanie określona, poczta bazy danych utworzy ją). Możesz także użyć @query_result_header
argument, aby określić, czy nagłówki są uwzględnione w zapytaniu, i możesz użyć @query_result_no_padding
argument, aby usunąć wszelkie dopełnienie, które jest automatycznie stosowane do wyników.