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

Come inviare tramite posta elettronica i risultati delle query come allegato in SQL Server (T-SQL)

In SQL Server puoi inviare e-mail utilizzando sp_send_dbmail stored procedure in msdb Banca dati.

Una delle scelte che hai durante l'esecuzione di questa procedura è se includere o meno i risultati di una query.

Un'altra scelta che hai è se inviare o meno quei risultati in un allegato.

Esempio

Per inviare via email i risultati di una query, utilizza @query argomento.

Per allegare quei risultati come allegato, usa il @attach_query_result_as_file discussione. 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,
    @subject = 'Query results as discussed';

Questo esempio invia un'email con i risultati allegati come .txt file. Il nome è stato generato automaticamente da Database Mail.

Per impostazione predefinita, la dimensione massima del file per gli allegati è 1 MB per file, ma puoi modificarla con sysmail_configure_sp procedura memorizzata.

Fornire un nome per l'allegato

Hai anche la possibilità di fornire il tuo nome per l'allegato. Puoi farlo con il @query_attachment_filename discussione.

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

Più opzioni

Ecco un altro esempio che amplia il precedente. Qui, ho incluso una serie di opzioni che potresti trovare utili quando invii i risultati della query come allegato 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';

Alcuni di questi sono impostati sul valore predefinito e altri no. Ad esempio, ho cambiato @query_result_no_padding a 1 per rimuovere il riempimento all'interno delle colonne. Ho anche usato @query_result_separator per cambiare il separatore dallo spazio predefinito a una virgola.

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 non hai configurato Posta elettronica database, vedere Come inviare e-mail da SQL Server. Questo articolo fornisce esempi per abilitare e configurare Database Mail con T-SQL.