sql >> Databasteknik >  >> RDS >> Sqlserver

Skicka e-postmeddelanden med bilagor i SQL Server (T-SQL)

SQL Server ger oss möjligheten att skicka e-post via sin Database Mail-lösning. Detta inkluderar ett gäng lagrade procedurer som underlättar konfigurering och sändning av e-post.

För att skicka ett e-postmeddelande, använd sp_send_dbmail lagrad procedur. Denna procedur accepterar ett gäng valfria argument, varav ett låter dig skicka bilagor.

Det finns faktiskt två argument som gör att du kan skicka bilagor. Vilken du använder beror på sammanhanget.

De är:

  • @file_attachments – Låter dig ange en fil som ska bifogas e-postmeddelandet.
  • @attach_query_result_as_file – Detta är bara tillämpligt om du också använder @query för att e-posta resultatet av en fråga.

Exempel nedan.

Bifoga en fil

@file_attachments argument låter dig ange en fil som ska bifogas till e-postmeddelandet.

Här är ett exempel:

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

Värdet måste inkludera den absoluta sökvägen till filen.

Som standard är den maximala filstorleken 1 MB per fil, men du kan ändra detta med sysmail_configure_sp lagrad procedur.

Bifoga flera filer

Du kan bifoga flera filer genom att separera varje filnamn med ett semikolon:

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

Som nämnts gäller filstorleksgränsen för varje fil. Så om filstorleksgränsen är 1 MB kan varje fil i det här exemplet vara upp till 1 MB (vilket resulterar i en total storlek på 2 MB för båda bilagorna tillsammans).

Bifoga resultat av en fråga

Du kan också använda Databas Mail för att e-posta resultatet av en fråga. Detta görs med @query argument. Som standard listas resultaten i brödtexten i e-postmeddelandet, men du kan lägga till dem som en bilaga om du föredrar det.

För att lägga till dem som en bilaga, ställ in @attach_query_result_as_file argument med värdet 1 .

Här är ett exempel på hur du skickar frågeresultat som en bilaga:

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

Det finns en hel del alternativ tillgängliga för dig när du skickar frågeresultat i ett e-postmeddelande.

Du kan till exempel använda @query_attachment_filename för att ange filnamnet (om det inte anges kommer Database Mail att skapa ett). Du kan också använda @query_result_header argument för att ange om rubrikerna ingår i frågan eller inte, och du kan använda @query_result_no_padding argument för att ta bort eventuell utfyllnad som automatiskt tillämpas på resultaten.


  1. SQL-fråga för att visa närmaste datum?

  2. heroku, postgreSQL, django, comments, tastypie:Ingen operator matchar givna namn och argumenttyp(er). Du kan behöva lägga till explicita casts

  3. Möjligt att skapa Oracle Database-objekttyper inuti PL/SQL?

  4. dynamisk sql-fråga i postgres