Spowoduje to dołączenie wyniku zapytania jako csv, po prostu zmień go na nazwapliku.xls, jeśli wolisz ten format. Myślę, że csv działa lepiej, w programie Excel możesz otrzymać ostrzeżenie, że plik jest w innym formacie niż określony przez rozszerzenie.
Użyłem również znaku CHAR(9) lub TAB jako separatora wyników zapytania, możesz to zmienić na dowolny, który Ci odpowiada.
Dodałem również SET NOCOUNT ON do twojego zapytania, jeśli nie masz tego, otrzymasz (1000 wierszy, których dotyczy) (niezależnie od liczby wierszy zwróconych przez zapytanie) na końcu pliku Excel.
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