データベースユーザーにSQLAgentOperatorRole
が付与されていますが、ジョブの有効/無効を設定するとエラーが発生します。エラーメッセージは次のとおりです。SQL Serverでジョブの有効/無効を設定する権限
SELECT権限は我々が仕事
sp_update_job
で有効/無効を設定し、スキーマ 'DBO'
、オブジェクトのsysjobs '、データベース 'MSDB' で拒否されました。
ありがとうございました。
コメント:
次のステートメントを実行すると、エラーが発生します。
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 @[email protected], @[email protected]
END
ELSE
BEGIN
SET @result = 1
END
SELECT @result
END
正確なコマンドは何ですか? SQLAgentOperatorRoleは2つのパラメータのみを指定でき、余分なパラメータがある場合はプロシージャが失敗します。それはあなたの問題かもしれないし、そうでないかもしれませんが、実行しているコマンドを見ずに誰も本当に助けることはできません。 – Pondlife
質問を編集しました。詳細を確認してください。シナリオは次のとおりです。1. User1にはSQLAgentOperatorRole権限があり、上記の2つの呼び出しメソッドを実行します。最初の呼び出しメソッドは失敗し、もう1つは成功しました。 2. User2にはsysadminロールがあり、2つのメソッドが正常に実行されました。コメントしてくれてありがとう。 – zclmoon