Sql-Server

如何從 SQL 作業發送包含多個選擇語句結果的電子郵件

  • April 5, 2018

我想創建一個 SQL 作業並發送包含多個選擇語句的電子郵件,包括查詢結果。是否可以使用 SQL Job 或者我應該使用 SSIS?

編輯1:

EXEC msdb.dbo.sp_send_dbmail  
   @profile_name = 'Adventure Works Administrator',  
   @recipients = '****@abc.com', 
   @Execute_query_database = 'AdventureWorks',
   @query = 'SELECT COUNT(*) FROM AdventureWorks.Production.WorkOrder  
                 WHERE DueDate > '2018-03-30'  
                 AND  DATEDIFF(dd, '2004-04-30', DueDate) < 2
             SELECT * FROM NorthWind.Production.Work  
                 WHERE DueDate > '2018-04-30'  
                 ' ,  
   @subject = 'Work Order Count',  
   @attach_query_result_as_file = 1 ;

錯誤消息:文件附件或查詢結果大小超出允許值 1000000 字節。

編輯 2:我覺得 SQL 代理作業沒有指向所需的數據庫,並且 sp_send_email 沒有數據庫名稱。所以我添加了@Execute_query_database = 'AdventureWorks'但仍然沒有改進,因為在 SQL SELECTS 中使用了兩個不同的數據庫。

有什麼想法嗎?

您基本上是從最大的 sql server 發送 1GB 文件。您可以使用重新配置預設值

exec msdb.dbo.sysmail_configure_sp ‘MaxFileSize’,‘2000000’– 2GB

我會說,使用 bcp 輸出文件,使用 zip 或 7zip 壓縮它,然後使用 powershell 或 ssis 發送。

要回答您的問題,您的查詢中可能有許多選擇語句,我不知道數量的限制。

您的第一個查詢將毫無問題地執行,但您的第二個查詢正在創建一個大於您的設置允許的結果集,因此它不會發送,我同意@kin 的觀點,您最好將結果保存在某處,然後通過電子郵件發送連結。作為獎勵,您的網路管理員也會更快樂!

引用自:https://dba.stackexchange.com/questions/203078