xp_sqlagent_enum_jobs無執行權限
去年因Server要汰換硬體,所以採用先建後拆在新機器上重建SQL server,然後將舊機器上的msdb 及user DB從restore到新機器。
結果之後非sysadmin的使用者在操作SQL Agent時皆會出現權限問題。
後來發現是因為##MS_AgentSigningCertificate##這個certificiate在Master及MSDB裡的SID不一致….
http://support.microsoft.com/kb/2000274#top
解法是在Master裡再建立一個certificate,讓SID與MSDB裡的##MS_AgentSigningCertificate##相同
--將msdb裡的certificate備成file
use msdb
go
BACKUP CERTIFICATE [##MS_AgentSigningCertificate##]
TO FILE = 'C:\temp\MS_AgentSigningCertificate.remote_server.cer'
go
--利用剛剛備出來的file在master裡再建立一個certificate
use master
go
CREATE CERTIFICATE [MS_AgentSigningCertificate.remote_server]
FROM FILE = 'C:\temp\MS_AgentSigningCertificate.remote_server.cer'
go
--建立user並給予權限
CREATE USER [MS_AgentSigningCertificate.remote_server]
FROM CERTIFICATE [MS_AgentSigningCertificate.remote_server]
go
GRANT EXECUTE TO [MS_AgentSigningCertificate.remote_server]
go
只要Master裡有一certificate跟Msdb裡的##MS_AgentSigningCertificate##具有相同的SID,錯誤就不會再發生了。
但是還不清楚MS_AgentSigningCertificate跟SQL agent之間是如何溝通 >”<