已授予数据库用户SQLAgentOperatorRole
,但设置作业启用/禁用时仍有错误。错误信息是:
对象“sysjobs”、数据库“msdb”、模式“dbo”的 SELECT 权限被拒绝
我们通过 设置作业启用/禁用sp_update_job
。
评论:
执行以下语句时,会报错。
bool result = ObjectInstance.ExecuteStoreQuery<bool>("EXEC usp_prod_SetJobStatus @jobName={0}, @isEnable={1}", jobName, isEnable).FirstOrDefault();
但是,当使用下面的语句时,它会执行成功。
ObjectInstance.ExecuteStoreCommand("EXEC msdb.dbo.sp_update_job @job_name={0}, @enabled={1}", jobName, isEnable);
usp_prod_SetJobStatus SP:
CREATE PROCEDURE [dbo].[usp_prod_SetJobStatus]
@jobName VARCHAR(200),
@isEnable BIT
AS
BEGIN
DECLARE @jobId uniqueidentifier
DECLARE @result BIT
SELECT @jobId = job_id FROM msdb.dbo.sysjobs WHERE name = @jobName
IF(@jobId IS NOT NULL)
BEGIN
EXEC @result = msdb.dbo.sp_update_job @job_name=@jobName, @enabled=@isEnable
END
ELSE
BEGIN
SET @result = 1
END
SELECT @result
END