sp_send_dbmail 成功但有時失敗

sp_send_dbmail 成功但有時失敗

也發佈在堆疊溢位中。任何反饋將不勝感激。

我需要一個 SQL 作業來傳送多封電子郵件,並且我遇到了這個錯誤,但我無法找到任何解決方案。當我以這種方式發送電子郵件時,每次測試都會成功。

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@subject = 'Testing';

當我向電子郵件新增查詢時,作業有時會失敗。

我提取了一個片段並簡化了複製該問題的 SELECT 查詢。

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@query = 
'
SELECT GETDATE()
',
@subject = 'Testing';

當我運行此程式碼時,它成功地向我發送了一封包含日期時間的電子郵件,如果我再次運行程式碼,我會收到一般錯誤,但並非總是如此。

無法初始化 sqlcmd 函式庫,錯誤號碼為 -2147467259。

我用 SQL Server Profiler 做了一些挖掘,發現了這個錯誤訊息

連接已被刪除,因為打開它的主體隨後採用了新的安全上下文,然後嘗試在其模擬的安全上下文下重置連接。不支援這種情況。請參閱聯機叢書中的「模擬概述」。

我目前使用 SA 帳戶,但從最小的可行權限開始。

我嘗試在通用電子郵件設定檔下執行該作業,得到相同的結果。

運行此程式碼的作業會成功或失敗,而我找不到明顯的原因。作業是否成功運作似乎也沒有任何模式。

有沒有人遇到過這個問題並設法解決它?或者有人能夠指出我解決這個問題的方向嗎?

答案1

嘗試設定@query_result_header0@query_no_truncate1

@query_result_header = 1
@query_no_truncate = 0

query_result_header指定查詢結果是否包含列標題。

“query_result_header”值的類型為“bit”。當值為1時,查詢結果包含列標題。當值為0時,查詢結果不包含列標題。此參數預設為 1(並且僅在指定 @query 時適用)。

相關內容