sql >> Database >  >> RDS >> Sqlserver

Verstuur e-mails met bijlagen in SQL Server (T-SQL)

SQL Server biedt ons de mogelijkheid om e-mails te verzenden via de Database Mail-oplossing. Dit omvat een aantal opgeslagen procedures die de configuratie en het verzenden van e-mails vergemakkelijken.

Gebruik de sp_send_dbmail . om een ​​e-mail te verzenden opgeslagen procedure. Deze procedure accepteert een aantal optionele argumenten, waarvan er één u in staat stelt bijlagen te verzenden.

Er zijn eigenlijk twee argumenten waarmee u bijlagen kunt verzenden. Welke je gebruikt hangt af van de context.

Dit zijn:

  • @file_attachments – Hiermee kunt u een bestand opgeven om aan de e-mail toe te voegen.
  • @attach_query_result_as_file – Dit is alleen van toepassing als u ook @query gebruikt om de resultaten van een zoekopdracht te e-mailen.

Voorbeelden hieronder.

Een bestand bijvoegen

De @file_attachments argument stelt u in staat om een ​​bestand op te geven dat als bijlage bij de e-mail moet worden gevoegd.

Hier is een voorbeeld:

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

De waarde moet het absolute pad naar het bestand bevatten.

Standaard is de maximale bestandsgrootte 1 MB per bestand, maar u kunt dit wijzigen met de sysmail_configure_sp opgeslagen procedure.

Meerdere bestanden bijvoegen

U kunt meerdere bestanden bijvoegen door elke bestandsnaam te scheiden met een puntkomma:

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

Zoals vermeld, is de bestandsgroottelimiet van toepassing op elk bestand. Dus als de maximale bestandsgrootte 1 MB is, kan elk bestand in dit voorbeeld maximaal 1 MB zijn (wat resulteert in een totale grootte van 2 MB voor beide bijlagen samen).

Resultaten van een zoekopdracht bijvoegen

U kunt Database Mail ook gebruiken om het resultaat van een query te e-mailen. Dit wordt gedaan met de @query argument. De resultaten worden standaard weergegeven in de hoofdtekst van de e-mail, maar u kunt ze desgewenst als bijlage toevoegen.

Om ze als bijlage toe te voegen, stelt u de @attach_query_result_as_file in argument met een waarde van 1 .

Hier is een voorbeeld van het verzenden van zoekopdrachtresultaten als bijlage:

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

Er zijn nogal wat opties voor u beschikbaar bij het verzenden van queryresultaten in een e-mail.

U kunt bijvoorbeeld @query_attachment_filename . gebruiken om de bestandsnaam op te geven (indien niet opgegeven, zal Database Mail er een verzinnen). U kunt ook de @query_result_header . gebruiken argument om aan te geven of de headers al dan niet in de query moeten worden opgenomen, en u kunt de @query_result_no_padding gebruiken argument om opvulling te verwijderen die automatisch op de resultaten wordt toegepast.


  1. MySQL Group_Concat() versus T-SQL String_Agg()

  2. Zet alle tabellen, opgeslagen procedures, triggers, beperkingen en alle afhankelijkheden in één sql-instructie

  3. Reset het root-wachtwoord van MySQL op Windows

  4. Eenvoudige manier om mediaan te berekenen met MySQL