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数据库并授予其正确的权限.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...