Sql-Server

對象“sp_send_dbmail”、數據庫“msdb”的間歇性 EXECUTE 權限被拒絕

  • September 22, 2017

我有一個工作每 2 分鐘執行一次,並在收集工作資訊後向使用者發送電子郵件。大多數情況下它是成功的,但每隔幾天它就會因為Execute 權限被拒絕而失敗。失敗後它再次執行就好了。

這是一項通過表格並獲取某些工作的資訊和狀態的工作。不是 SQL Server 作業,而是專有應用程序作業,其資訊儲存在數據庫的表中。它製作一封電子郵件並以 HTML 格式從msdb.dbo.sp_send_dbmail.

它歸 sa 所有,不手動執行。我在想,由於它每兩天(有時 3 或 4 天)只發生一次,可能是消息的內容太大或其中有一些垃圾阻止msdb.dbo.sp_send_dbmailproc 發送。

作業或步驟沒有錯誤處理。只有一個步驟:它執行聚合資訊並發送電子郵件的過程。代理日誌與關於權限的問題標題中的內容相同。

SQL Server 設置為記錄失敗的登錄。截至一周前,沒有失敗的登錄。

通過設置維護計劃來清理 MSDB 解決了這個問題。它非常飽滿!等待發布答案,因為我想確保我們經歷了幾個星期而沒有收到Execute permission denied 錯誤

社區維基回答

修改job step以記錄job step的輸出,並將儲存的proc配置為PRINTproc程式碼開頭的一些文本。您應該能夠通過查看工作歷史記錄來判斷是否正在呼叫 proc。好像你有一些故障排除要做。

sp_send_dbmail由於無法將郵件發送到 SMTP 伺服器,proc 也可能返回拒絕訪問錯誤。

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