2012-10-18 66 views
5

我試圖使用sp_send_dbmail從計劃SQL代理作業發送電子郵件並收到以下錯誤:sp_send_dbmail錯誤在Microsoft SQL代理作業

消息22050,級別16,狀態1,行0 錯誤格式查詢,可能無效參數 消息14661,級別16,狀態1,過程sp_send_dbmail,行504 查詢執行失敗:消息15404,級別16,狀態19,服務器MyServer,行1 無法獲取有關Windows NT組/用戶'MyDomain \ sqlagent',錯誤代碼0x5。

下面是從作業步驟代碼:

DECLARE @SQL NVARCHAR(400) 
SELECT @SQL = 'SELECT COUNT(staff_id) FROM Staff' 

EXEC msdb.dbo.sp_send_dbmail 
@recipients = '[email protected]', 
@subject = 'Email Alert', 
@body = 'Test', 
@query = @SQL, 
@execute_query_database = 'MyDB' 

SQL代理在一個域帳戶下運行[MYDOMAIN \ SQLAGENT。我在MyDB數據庫中授予此用戶db_owner權限,並將其作爲msdb中DatabaseMailUserRole的成員添加。仍然沒有運氣。如果我刪除@query和@execute_query_database參數,它將發送一個'測試'電子郵件。但是,我需要附加查詢的結果。

任何幫助表示讚賞,謝謝。

回答

3

我在過去遇到過一些與AD有關的奇怪錯誤。我建議檢查一下你正在運行的這個帳戶是否具有AD中可讀的屬性。最快的方法是運行

exec xp_logininfo 'MyDomain\sqlagent' 

看看你是否得到相同的錯誤。如果是這樣,請檢查域帳戶的安全屬性[右鍵單擊Active Directory中的用戶>屬性>安全選項卡],然後設置已驗證用戶的讀取權限。

+0

Nic,感謝您的提供。我運行了你推薦的查詢並收到了我收到的同樣的消息。我按照你的建議設置了AD權限[它沒有],並且之後所有東西都像魅力一樣工作。 SQL代理作業運行並且電子郵件成功發送。 – Brad

+0

很高興爲你效力。最近我遇到過這個問題。 – Nic

+0

這也解決了這個問題,其他答案沒有(甚至在其他類似的SO問題中)。 –