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

Invia e-mail con allegati in SQL Server (T-SQL)

SQL Server ci offre la possibilità di inviare e-mail tramite la sua soluzione Database Mail. Ciò include una serie di stored procedure che facilitano la configurazione e l'invio di e-mail.

Per inviare un'e-mail, utilizza sp_send_dbmail procedura memorizzata. Questa procedura accetta una serie di argomenti facoltativi, uno dei quali consente di inviare allegati.

In realtà, ci sono due argomenti che ti consentono di inviare allegati. Quello che usi dipenderà dal contesto.

Sono:

  • @file_attachments – Consente di specificare un file da allegare all'e-mail.
  • @attach_query_result_as_file – Questo è applicabile solo se stai usando anche @query per inviare via email i risultati di una query.

Esempi sotto.

Allega un file

Il @file_attachments argomento consente di specificare un file da allegare all'e-mail.

Ecco un esempio:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached file contains all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak',
    @subject = 'File attached as discussed';

Il valore deve includere il percorso assoluto del file.

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

Allega più file

Puoi allegare più file separando ogni nome di file con un punto e virgola:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached files contain all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak;/var/opt/mssql/bak/World.bak',
    @subject = 'Files attached as discussed';

Come accennato, il limite di dimensione del file si applica a ciascun file. Quindi, se il limite di dimensione del file è 1 MB, ogni file in questo esempio può essere fino a 1 MB (con conseguente dimensione totale di 2 MB per entrambi gli allegati combinati).

Allega i risultati di una query

È inoltre possibile utilizzare Posta elettronica database per inviare tramite posta elettronica il risultato di una query. Questo viene fatto con @query discussione. Per impostazione predefinita, i risultati sono elencati nel corpo dell'e-mail, ma puoi aggiungerli come allegato se preferisci.

Per aggiungerli come allegato, imposta il @attach_query_result_as_file argomento con un valore di 1 .

Ecco un esempio di invio dei risultati della query come allegato:

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

Ci sono alcune opzioni disponibili quando si inviano i risultati della query in un'e-mail.

Ad esempio, puoi utilizzare @query_attachment_filename per specificare il nome del file (se non specificato, Posta elettronica database ne creerà uno). Puoi anche usare il @query_result_header argomento per specificare se le intestazioni sono incluse o meno nella query e puoi utilizzare @query_result_no_padding argomento per rimuovere il riempimento che viene applicato automaticamente ai risultati.