sql >> Database >  >> RDS >> Sqlserver

Queryresultaten e-mailen als bijlage in SQL Server (T-SQL)

In SQL Server kunt u e-mails verzenden met de sp_send_dbmail opgeslagen procedure in de msdb databank.

Een van de keuzes die u heeft bij het uitvoeren van deze procedure is of u de resultaten van een zoekopdracht wel of niet wilt opnemen.

Een andere keuze die u heeft, is of u deze resultaten in een bijlage wilt verzenden.

Voorbeeld

Om de resultaten van een zoekopdracht te e-mailen, gebruikt u de @query argument.

Om die resultaten als bijlage bij te voegen, gebruikt u de @attach_query_result_as_file argument. Dit accepteert een beetje waarde, met als standaard 0 (voor geen bijlage).

Om de resultaten in een bijlage te verzenden, geeft u eenvoudig een 1 . op voor dit argument.

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

Dit voorbeeld stuurt een e-mail met de resultaten als bijlage als een .txt het dossier. De naam is automatisch gegenereerd door Database Mail.

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

Geef een naam op voor de bijlage

U heeft ook de mogelijkheid om uw eigen naam voor de bijlage op te geven. U kunt dit doen met de @query_attachment_filename argument.

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

Meer opties

Hier is nog een voorbeeld dat uitbreidt op het vorige. Hier heb ik een aantal opties opgenomen die u misschien handig vindt bij het verzenden van queryresultaten als e-mailbijlage.

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

Sommige hiervan zijn ingesteld op hun standaardwaarde en andere niet. Ik heb bijvoorbeeld @query_result_no_padding . gewijzigd naar 1 om opvulling uit de kolommen te verwijderen. Ik heb ook @query_result_separator . gebruikt om het scheidingsteken van de standaardruimte te wijzigen in een komma.

De sp_send_dbmail procedure accepteert meer argumenten dan ik hier heb vermeld. Zie de documentatie van Microsoft voor een volledige lijst met argumenten en hun beschrijvingen.

Database-e-mail configureren

De voorbeelden op deze pagina gaan ervan uit dat u Database Mail al hebt ingeschakeld en geconfigureerd.

Zie E-mail verzenden vanuit SQL Server als u Database Mail niet hebt geconfigureerd. Dat artikel geeft voorbeelden voor het inschakelen en configureren van Database Mail met T-SQL.


  1. SQL Server 2017 Stap voor stap installatie -2

  2. Beschermt mysql_real_escape_string() VOLLEDIG tegen SQL-injectie?

  3. PostgreSQL-databaseservice

  4. Een database-e-mailaccount (SSMS) verwijderen