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

前端之家收集整理的这篇文章主要介绍了sql-server-2005 – 从存储过程调用sp_start_job前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的开发人员需要能够从他们的.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数据库并授予其正确的权限.

猜你在找的MsSQL相关文章