Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wysyłaj wiadomości e-mail z załącznikami w SQL Server (T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2012 wysyła zapytania dotyczące danych programu Access 2007 przy użyciu błędu OPENROWSET

  2. Czy integracja SQL Server CLR obsługuje pliki konfiguracyjne?

  3. Jak pobrać nazwy pól z tabeli tymczasowej (SQL Server 2008)

  4. Odroczone ograniczenia w SQL Server

  5. Dlaczego serwer sql przechowuje znaki zapytania zamiast znaków japońskich w polach NVarchar?