Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Datenbank-E-Mail mit Anhang (Excel-Datei / PDF-Datei)?

Dadurch wird Ihr Abfrageergebnis als CSV-Datei angehängt. Ändern Sie es einfach in filename.xls, wenn Sie dieses Format bevorzugen. Ich denke, csv funktioniert besser, bei Excel erhalten Sie möglicherweise eine Warnung, dass die Datei in einem anderen Format vorliegt als in der Erweiterung angegeben.

Außerdem habe ich CHAR(9) oder TAB als Trennzeichen für das Abfrageergebnis verwendet, Sie können das ändern, was immer für Sie funktioniert.

Ich habe Ihrer Abfrage auch SET NOCOUNT ON hinzugefügt, wenn Sie das nicht haben, erhalten Sie (1000 betroffene Zeilen) (unabhängig von der Anzahl der Zeilen, die Ihre Abfrage zurückgibt) am Ende Ihrer Excel-Datei.

DECLARE
    @tab char(1) = CHAR(9)

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = '[email protected]',
    @query = 'SET NOCOUNT ON 
              SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
              WHERE DueDate > ''2004-04-30''
              AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1,
    @query_attachment_filename='filename.csv',
    @[email protected],
    @query_result_no_padding=1