數據庫用戶已被授予SQLAgentOperatorRole
,但設置作業啓用/禁用時仍存在錯誤。該錯誤信息是:設置作業的權限在SQL Server中啓用/禁用
SELECT權限被拒絕的對象sysjobs'數據庫 'MSDB',架構 'DBO'
我們設定的工作由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 @[email protected], @[email protected]
END
ELSE
BEGIN
SET @result = 1
END
SELECT @result
END
你使用的確切命令是什麼?該文檔說,SQLAgentOperatorRole只能指定兩個參數,如果有額外的參數,那麼該過程將失敗。這可能是也可能不是你的問題,但是沒有看到你正在執行的命令,沒有人能真正幫助你。 – Pondlife
我編輯了這個問題。請查看詳細信息。該場景是:1.用戶1具有SQLAgentOperatorRole權限,並執行上述兩種調用方法,第一個失敗,而另一個成功。 2. User2具有sysadmin角色,這兩個方法已成功執行。感謝您的意見。 – zclmoon