加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2005 – 从存储过程调用sp_start_job

发布时间:2020-12-12 16:54:57 所属栏目:MsSql教程 来源:网络整理
导读:我们的开发人员需要能够从他们的.Net代码启动SQL Server代理作业.我知道我可以调用msdb..sp_start_job来做到这一点,但我不想让普通用户帐户直接访问运行作业. 我想要做的是使用WITH EXECUTE AS子句在应用程序的数据库中创建一个存储过程来模拟代理帐户.我们拥
我们的开发人员需要能够从他们的.Net代码启动SQL Server代理作业.我知道我可以调用msdb..sp_start_job来做到这一点,但我不想让普通用户帐户直接访问运行作业.

我想要做的是使用WITH EXECUTE AS子句在应用程序的数据库中创建一个存储过程来模拟代理帐户.我们拥有的程序是:

CREATE PROCEDURE dbo.StartAgentJob 
    WITH EXECUTE AS 'agentProxy'
AS
BEGIN
    EXEC msdb.dbo.sp_start_job N'RunThisJob';
END

但是,当我们运行它时,我们收到以下消息:

The EXECUTE permission was denied on the object 'sp_start_job',database 'msdb',schema 'dbo'.

有任何想法吗?这是在SQL2005中执行此操作的最佳方法吗?

解决方法

您是否已将agentProxy登录在msdb数据库中并赋予其运行sp_start_job的权限?如果不是,则需要为msdb数据库和用户数据库启用数据库权限链接.

您最好将登录信息放入msdb数据库并授予其正确的权限.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读