2014-09-03 74 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的上述角色之一的成员。

相关问题