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

Como enviar por email os resultados de uma consulta no SQL Server (T-SQL)


O SQL Server fornece uma maneira fácil de enviar por email os resultados de uma consulta para você mesmo (ou para outra pessoa).

Para enviar e-mail com T-SQL, você precisa usar o sp_send_dbmail procedimento armazenado no msdb base de dados. Este procedimento aceita muitos argumentos, um dos quais é o @query argumento. Esse é o argumento que anexa os resultados da sua consulta ao email.

Exemplo


Aqui está um exemplo básico que usa um mínimo de argumentos:
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',
    @subject = 'Query results as discussed';

Por padrão, os resultados da consulta são listados no corpo do email. Alternativamente, você pode enviar os resultados como um anexo.

Remover preenchimento


Se seus resultados forem formatados com muito preenchimento nas colunas, você poderá usar @query_result_no_padding = 1 para eliminar este preenchimento.
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',
    @query_result_no_padding = 1,
    @subject = 'Query results as discussed';

Adicionar resultados de consulta como um anexo


Você pode usar o @attach_query_result_as_file argumento para adicionar os resultados da consulta como um anexo. 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,
    @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';

Neste exemplo, adicionei mais alguns argumentos.

O @query_attachment_filename O argumento permite que você especifique seu próprio nome de arquivo (se você não fornecer esse argumento, o Database Mail criará um).

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 de T-SQL para habilitar e configurar o Database Mail. Não demora muito.