sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man e-postar frågeresultat som en bilaga i SQL Server (T-SQL)

I SQL Server kan du skicka e-postmeddelanden med sp_send_dbmail lagrad procedur i msdb databas.

Ett av valen du har när du kör den här proceduren är om du vill inkludera resultaten av en fråga eller inte.

Ett annat val du har är om du vill skicka dessa resultat i en bilaga eller inte.

Exempel

Använd @query för att e-posta resultaten av en fråga argument.

För att bifoga dessa resultat som en bilaga, använd @attach_query_result_as_file argument. Det här accepterar bit värde, med standardvärdet 0 (för ingen bilaga).

För att skicka resultaten i en bilaga, ange bara en 1 för detta 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';

Det här exemplet skickar ett e-postmeddelande med resultaten bifogade som en .txt fil. Namnet genererades automatiskt av Database Mail.

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

Ange ett namn för bilagan

Du har också möjlighet att ange ditt eget namn för bilagan. Du kan göra detta med @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';

Fler alternativ

Här är ett annat exempel som utökar det föregående. Här har jag inkluderat ett antal alternativ som du kan ha nytta av när du skickar frågeresultat som en e-postbilaga.

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

Vissa av dessa är inställda på sitt standardvärde och andra är det inte. Till exempel har jag ändrat @query_result_no_padding till 1 för att ta bort stoppning från kolumnerna. Jag har också använt @query_result_separator för att ändra avgränsaren från standardutrymmet till ett kommatecken.

sp_send_dbmail proceduren accepterar fler argument än jag har listat här. Se Microsofts dokumentation för en fullständig lista över argument och deras beskrivningar.

Konfigurera Databas Mail

Exemplen på den här sidan förutsätter att du redan har aktiverat och konfigurerat Databas Mail.

Om du inte har konfigurerat Databas Mail, se Hur man skickar e-post från SQL Server. Den artikeln ger exempel på hur du aktiverar och konfigurerar Database Mail med T-SQL.


  1. 2 sätt att lista tabellerna i en SQLite-databas

  2. Hur återställer jag postgresql 9.2 standardanvändarlösenordet (vanligtvis 'postgres') på mac os x 10.8.2?

  3. MyISAM kontra InnoDB

  4. Hur man använder Bulk Collect-klausul med SELECT INTO-sats i Oracle Database