sql >> Databáze >  >> RDS >> Sqlserver

Jak poslat výsledky dotazu e-mailem jako přílohu v SQL Server (T-SQL)

Na serveru SQL Server můžete odesílat e-maily pomocí sp_send_dbmail uložená procedura v msdb databáze.

Jednou z možností, kterou máte při provádění tohoto postupu, je, zda zahrnout výsledky dotazu či nikoli.

Další možností je, zda tyto výsledky odeslat v příloze.

Příklad

Chcete-li výsledky dotazu odeslat e-mailem, použijte @query argument.

Chcete-li tyto výsledky připojit jako přílohu, použijte @attach_query_result_as_file argument. Toto je přijímá bit hodnota, přičemž výchozí hodnota je 0 (bez přílohy).

Chcete-li odeslat výsledky v příloze, jednoduše zadejte 1 pro tento 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,
    @subject = 'Query results as discussed';

Tento příklad odešle e-mail s připojenými výsledky jako .txt soubor. Název byl automaticky vygenerován Database Mail.

Ve výchozím nastavení je maximální velikost souboru pro přílohy 1 MB na soubor, ale můžete to změnit pomocí sysmail_configure_sp uložená procedura.

Zadejte název přílohy

Máte také možnost uvést své vlastní jméno pro přílohu. Můžete to udělat 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';

Další možnosti

Zde je další příklad, který rozšiřuje předchozí. Zde jsem zahrnul řadu možností, které by se vám mohly hodit při odesílání výsledků dotazu jako přílohy e-mailu.

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';

Některé z nich jsou nastaveny na výchozí hodnotu a některé ne. Například jsem změnil @query_result_no_padding1 za účelem odstranění výplně ze sloupců. Také jsem použil @query_result_separator změnit oddělovač z výchozí mezery na čárku.

sp_send_dbmail procedura přijímá více argumentů, než jsem zde uvedl. Úplný seznam argumentů a jejich popis naleznete v dokumentaci společnosti Microsoft.

Konfigurace databázové pošty

Příklady na této stránce předpokládají, že jste již povolili a nakonfigurovali Database Mail.

Pokud nemáte nakonfigurovanou databázovou poštu, přečtěte si část Jak odesílat e-maily ze serveru SQL. Tento článek poskytuje příklady povolení a konfigurace Database Mail s T-SQL.


  1. Jak vypočítat klouzavý průměr v Redshift

  2. Instalace SQL Server 2017 krok za krokem -1

  3. Jak objednávat podle data v MySQL

  4. Automatizace barmana s loutkou:it2ndq/barman (část druhá)