Điều này sẽ đính kèm kết quả truy vấn của bạn dưới dạng csv, chỉ cần thay đổi nó thành filename.xls nếu bạn thích định dạng đó. Tôi nghĩ csv hoạt động tốt hơn, với excel, bạn có thể nhận được cảnh báo cho biết tệp có định dạng khác với định dạng do tiện ích chỉ định.
Ngoài ra, tôi đã sử dụng CHAR (9) hoặc TAB cho dấu phân tách kết quả truy vấn, bạn có thể thay đổi điều đó thành bất kỳ thứ gì phù hợp với bạn.
Tôi cũng đã thêm ĐẶT SỐ BẬT vào truy vấn của bạn, nếu bạn không có, bạn sẽ nhận được (1000 hàng bị ảnh hưởng) (bất kỳ số hàng nào mà truy vấn của bạn trả về) ở cuối tệp excel của bạn.
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