2014-09-03 77 views
0

在過去的這個命令將工作:遠程執行一個SQL Server作業通過另一份工作

EXEC [linkedServerName].msdb.dbo.sp_start_job @job_name = 'test2' 

現在我不得不使用冒充登錄並添加SQL服務帳戶(在本地登錄到假冒引用)的調用服務器到被調用的服務器上,並給它SA權限:認爲我做錯了什麼,它應該不是那麼複雜嗎?

沒有SA特權的帳戶冒充添加到遠程服務器,我收到錯誤:

The EXECUTE permission was denied on the object 'sp_start_job', database 'msdb', schema 'dbo'.

謝謝

+0

你是什麼意思「現在我必須......」?什麼改變了?升級到更新版本的SQL Server?你現在用什麼版本? – 2014-09-03 14:26:24

回答

1

it shouldn't be so complicated should it?

這並不比你的任務更加複雜這樣做。這是非常基本的安全。如果您希望帳戶能夠在服務器上執行任務,則該帳戶需要具有對該服務器的正確訪問權限。我不知道爲什麼你認爲它應該是另外的。設置代理帳戶並不是最直接的,但是從遠程服務器而不是本地代理的調度作業也不是最直接的任務。

根據the doc用戶需要成爲sysadmin,SQLAgentUserRole,SQLAgentReaderRole或SQLAgentOperatorRole的成員才能調用sp_start_job

替代方法是configure the linked server使用固定安全上下文或映射安全上下文,而不是模擬安全上下文。這可以在鏈接服務器屬性的the Security page上進行配置。請注意,用於固定上下文的帳戶仍需要是執行sp_start_job的上述角色之一的成員。

相關問題