远程执行一个SQL Server作业通过另一份工作
问题描述:
在过去的这个命令将工作:远程执行一个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'.
谢谢
答
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
的上述角色之一的成员。
你是什么意思“现在我必须......”?什么改变了?升级到更新版本的SQL Server?你现在用什么版本? – 2014-09-03 14:26:24