0

我正在尝试创建一个存储过程,以编程方式创建作业和步骤并运行它。这可行,但我还需要模拟用户,因为最终用户无权执行此操作。

我创建了一个测试用户 (sa2) 并授予它权限,我可以正常运行我的程序。如果我添加 WOTJ EXECUTE AS 'sa2' (或所有者)行并在仍以 sa2 身份登录的同时运行相同的过程,则会收到以下错误:

消息 229,级别 14,状态 5,过程 msdb..sp_add_job,第 1 行 [批处理开始第 2 行] 对象“sp_add_job”、数据库“msdb”、架构“dbo”的执行权限被拒绝。消息 229,级别 14,状态 5,过程 msdb..sp_add_jobstep,第 1 行 [批处理开始第 2 行] 对象“sp_add_jobstep”、数据库“msdb”、模式“dbo”的执行权限被拒绝。消息 229,级别 14,状态 5,过程 msdb..sp_add_jobserver,第 1 行 [批处理开始第 2 行] 对象“sp_add_jobserver”、数据库“msdb”、架构“dbo”的执行权限被拒绝。消息 229,级别 14,状态 5,过程 msdb..sp_start_job,第 1 行 [批处理开始第 2 行] 对象“sp_start_job”、数据库“msdb”、架构“dbo”的执行权限被拒绝。

我的最终目标是让它为另一个用户工作,但我不能以 sa2 身份登录并在过程声明中包含 EXECUTE AS 行,这似乎很奇怪。

有谁知道这是为什么,我能做些什么来解决它?

4

1 回答 1

0

谢谢您的帮助。答案在大卫布朗的第二篇文章中第二个解决方案(6.3)帮助

于 2020-01-28T15:48:14.180 回答