Sqlエージェントジョブを実行しようとすると、同時に実行されている以前のインスタンスがないことを確認しています。SqlAgentジョブを実行しているときの権限の問題
IF NOT EXISTS(SELECT
1
FROM msdb.dbo.sysjobactivity ja
LEFT JOIN msdb.dbo.sysjobhistory jh
ON ja.job_history_id = jh.instance_id
JOIN msdb.dbo.sysjobs j
ON ja.job_id = j.job_id
JOIN msdb.dbo.sysjobsteps js
ON ja.job_id = js.job_id
AND ISNULL(ja.last_executed_step_id,0)+1 = js.step_id
WHERE ja.session_id = (SELECT TOP 1 session_id FROM msdb.dbo.syssessions ORDER BY agent_start_date DESC)
AND j.name = N'JobName'
AND start_execution_date is not null
AND stop_execution_date is null
)
BEGIN
-- code to run the job
END
しかし、私はステップが失敗した
The SELECT permission was denied on the object 'syssessions', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (Error 229).
というエラーを取得しています:クエリは以下のとおりです。ジョブステップはsysadmin
特権を持つアカウントで実行されます。
データベースにもdb_owner
特権を持つアカウントを割り当てようとしました。それでも、同じ問題に直面しています。
このアクセス権の問題を解決する方法について教えてください。
感謝。同じジョブを再度開始すると、ジョブは開始されません。並行性の問題が心配でした。 –