过去这个命令可行:
EXEC [linkedServerName].msdb.dbo.sp_start_job @job_name = 'test2'
现在我必须使用模拟登录并将调用服务器的SQL服务帐户(在本地登录中引用到impersonate)添加到被叫服务器并赋予它SA权限:认为我做错了,它不应该这样应该复杂吗?
如果没有添加到远程服务器的模拟帐户的SA
权限,我收到错误:
对象'sp_start_job',数据库'msdb',架构'dbo'上的EXECUTE权限被拒绝。
谢谢
答案 0 :(得分:1)
应该不应该这么复杂吗?
这并不比你正在做的任务复杂得多。这是非常基本的安全性。如果您希望帐户能够在服务器上执行操作,则该帐户需要具有对该服务器的适当访问权限。我不确定你为什么认为应该这样。设置代理帐户并不是最直接的,但是从远程服务器而不是本地代理调度作业也不是最直接的任务。
每个the doc用户需要成为sysadmin,SQLAgentUserRole,SQLAgentReaderRole或SQLAgentOperatorRole的成员才能调用sp_start_job
。
另一种方法是configure the linked server使用固定的安全上下文或映射安全上下文而不是模拟安全上下文。这可以在the Security page链接服务器属性上配置。请注意,用于固定上下文的帐户仍需要是上述角色之一的成员才能执行sp_start_job
。