Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como enviar resultados de consulta por email como um anexo no SQL Server (T-SQL)


No SQL Server, você pode enviar emails usando o sp_send_dbmail procedimento armazenado no msdb base de dados.

Uma das opções que você tem ao executar esse procedimento é incluir ou não os resultados de uma consulta.

Outra opção que você tem é enviar ou não esses resultados em um anexo.

Exemplo


Para enviar por e-mail os resultados de uma consulta, use o @query argumento.

Para anexar esses resultados como um anexo, use o @attach_query_result_as_file argumento. Isso aceita um bit valor, com o padrão sendo 0 (sem anexo).

Para enviar os resultados em um anexo, basta fornecer um 1 para este argumento.
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';

Este exemplo envia um e-mail com os resultados anexados como um .txt Arquivo. O nome foi gerado automaticamente pelo Database Mail.

Por padrão, o tamanho máximo de arquivo para anexos é de 1 MB por arquivo, mas você pode alterar isso com o sysmail_configure_sp procedimento armazenado.

Forneça um nome para o anexo


Você também tem a opção de fornecer seu próprio nome para o anexo. Você pode fazer isso com o @query_attachment_filename argumento.
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';

Mais opções


Aqui está outro exemplo que expande o anterior. Aqui, incluí várias opções que você pode achar úteis ao enviar os resultados da consulta como um anexo de 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';

Alguns deles são definidos com seu valor padrão e outros não. Por exemplo, alterei @query_result_no_padding para 1 para remover o preenchimento de dentro das colunas. Eu também usei @query_result_separator para alterar o separador do espaço padrão para uma vírgula.

O sp_send_dbmail procedimento aceita mais argumentos do que eu listei aqui. Consulte a documentação da Microsoft para obter uma lista completa de argumentos e suas descrições.

Configurando o Database Mail


Os exemplos nesta página pressupõem que você já habilitou e configurou o Database Mail.

Se você não tiver o Database Mail configurado, consulte Como enviar email do SQL Server. Esse artigo fornece exemplos para habilitar e configurar o Database Mail com T-SQL.