我正在尝试创建将JobID返回到我的C#应用程序的存储过程。我的过程将由其他存储过程使用,所以我不能使用INSERT ... EXEC ...
,因为该语句不能嵌套。我发现最简单的方法是包装sp_verify_job_identifiers
过程。由于我客户的政策,只有“执行者”帐户可以访问msdb
数据库。
我分配了必需的权限
这是我的程序:
sql
ALTER PROCEDURE [dbo].[usp_GetAgentJobId] (@job_name SYSNAME, @job_id UNIQUEIDENTIFIER = NULL OUTPUT)
WITH EXECUTE AS '<<executor_name>>' AS
BEGIN
SET NOCOUNT ON;
EXEC [msdb].[dbo].[sp_verify_job_identifiers] '@job_name', '@job_id', @job_name OUTPUT, @job_id OUTPUT
SELECT @job_id
END
但是当我执行该过程时,出现以下错误:
消息229,级别14,状态5,过程sp_verify_job_identifiers,行 2对对象的EXECUTE权限被拒绝 “ sp_verify_job_identifiers”,数据库“ msdb”,架构“ dbo”。