Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come inviare via e-mail i risultati di una query in SQL Server (T-SQL)

SQL Server fornisce un modo semplice per inviare tramite posta elettronica i risultati di una query a se stessi (o a qualcun altro).

Per inviare e-mail con T-SQL, devi utilizzare sp_send_dbmail stored procedure in msdb Banca dati. Questa procedura accetta molti argomenti, uno dei quali è @query discussione. Questo è l'argomento che allega i risultati della tua query all'e-mail.

Esempio

Ecco un esempio di base che utilizza un minimo di argomenti:

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

Per impostazione predefinita, i risultati della query sono elencati nel corpo dell'e-mail. In alternativa, puoi inviare i risultati come allegato.

Rimuovi imbottitura

Se i risultati sono formattati con troppo riempimento all'interno delle colonne, puoi utilizzare @query_result_no_padding = 1 per eliminare questa imbottitura.

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

Aggiungi risultati della query come allegato

Puoi usare il @attach_query_result_as_file argomento per aggiungere i risultati della query come allegato. Questo accetta un bit valore, con il valore predefinito 0 (per nessun allegato).

Per inviare i risultati in allegato, è sufficiente fornire un 1 per questo argomento.

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

In questo esempio ho aggiunto altri argomenti.

Il @query_attachment_filename argomento ti consente di specificare il tuo nome file (se non fornisci questo argomento, Database Mail ne creerà uno).

Il sp_send_dbmail la procedura accetta più argomenti di quelli che ho elencato qui. Consulta la documentazione di Microsoft per un elenco completo degli argomenti e delle relative descrizioni.

Configurazione della posta database

Gli esempi in questa pagina presuppongono che tu abbia già abilitato e configurato Posta elettronica database.

Se la posta del database non è configurata, vedere Come inviare e-mail da SQL Server. Questo articolo fornisce esempi T-SQL per l'abilitazione e la configurazione di Posta elettronica database. Non ci vuole molto.