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

Jak wysłać wyniki zapytania e-mailem jako załącznik w SQL Server (T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalowanie Microsoft SQL Server 2012 Enterprise Edition z dodatkiem Service Pack 1

  2. Klauzula VALUES w SQL Server

  3. Uzyskiwanie numeru tygodnia od daty w MS SQL Server 2005?

  4. Monitoruj bazę danych SQL przez SP_WhoIsActive lub FogLight | Rozwiązywanie problemów z wydajnością serwera SQL -1

  5. Czym NIE jest operator logiczny w SQL Server — samouczek SQL Server / TSQL — część 121