データベース ユーザーは許可されていますが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