2012-09-14 105 views
7

我收到此錯誤:未能執行msdb.dbo.sp_send_dbmail

Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1
The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.

代碼的相關部分:

/****** Object: StoredProcedure [dbo].[dbo.STATUSCHANGE_EMAILALERT] ******/ 

EXEC msdb.dbo.sp_send_dbmail 
    @recipients = '[email protected]', -- Group Email 
    @subject = 'Employee Status Update', 
    @profile_name ='[email protected]', -- Setup the profile name group 
    @body = @body, 
    @body_format = 'HTML'; 
+5

錯誤提示您無法訪問'sp_send_dbmail'存儲過程。您需要將獲准'EXECUTE'它 – Taryn

+1

我發現這一點:http://stackoverflow.com/questions/5569511/how-to-give-access-to-sql-server-database-mail-procedures-for-一個登錄-IN-A-迪菲 –

+0

我覺得有一點點不僅僅是單獨的權限包括,將張貼在這裏一次,我知道得更多。感謝評論藍。你有沒有注意到我的腳本中有什麼可以改進的地方? –

回答

2

格蘭特sp_send_dbmail執行存儲過程的執行權限給用戶,或將它們添加到角色msdb.DatabaseMailUser

+0

你能告訴我在sp_send你怎麼會隆重執行權限... –

+0

描述; http://msdn.microsoft.com/en-us/library/ms345484(v=sql.100).aspx –

6

要發送數據庫郵件,用戶必須在msdb數據庫中的用戶,並在msdb數據庫中DatabaseMailUserRole數據庫角色的成員。要MSDB用戶或組添加到該角色使用SQL Server Management Studio或執行以下語句對需要發送數據庫郵件的用戶或角色:

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole' 
    ,@membername = '<user or role name>'; 
GO 
3

找到好的和簡單的辦法,對我here工作:

如果您的SQL應用程序中使用數據庫郵件(我假設你已經有了DBMail帳戶和配置文件的設置),有兩件事情來設置無法發送電子郵件:

  1. SQL Management Studio中>管理>數據庫郵件>點擊右鍵並 選擇配置...>選擇管理配置文件安全> SQL管理
  2. 把檢查公共選擇
  3. 點擊默認的配置文件,並將其設置爲YES
  4. STUDIO>數據庫>系統數據庫>右鍵單擊MSDB和 選擇NEW QUERY>然後在sp_send_dbmail上輸入> grant execute至 public,然後單擊確定。