SQL Job Step-不同的作业所有者和步骤用户

时间:2018-07-17 10:05:36

标签: sql-server

我想在用户(执行为)的安全上下文下开始执行步骤,但是当工作拥有者是不同于“以用户身份运行”的用户时,它将无法正常工作。

以用户XXXX的身份执行。对对象'sysschedules',数据库'msdb',模式'dbo'的SELECT权限被拒绝。 [SQLSTATE 42000](错误229)。步骤失败。

但是,即使为msdb对象授予选择权限,sysschedules,sysjobs,sysjobactivity也不起作用。甚至服务器sysadmin角色也不起作用。无法将事件添加到角色SQLAgentUserRole,SQLAgentReaderRole或/和SQLAgentOperatorRole中。还是一样的错误。

用户有什么最小权限/角色来执行t-sql步骤,其中作业由其他用户拥有?

execute as user = N'USERNAME' -- not working
select count(*) from msdb.dbo.sysschedules

用户是db_owner的成员。用户具有权限控制,请在dbo模式上选择...。

1 个答案:

答案 0 :(得分:0)

当我想从msdb.dbo.sysschedules中选择但从数据库中选择时出现问题。用户也存在于数据库msdb上。通过添加选项TRUSTWORTHY Database property解决了问题-现在可以在msdb中使用数据库中的同一用户。

整个问题都是基于过程msdb.dbo.sp_add_jobstep参数@database_user_name的-它不是登录名,而只有用户。

TRUSTWORTHY Database property