Sql server 运行SqlAgent作业时出现权限问题
当我尝试运行Sql代理作业时,我会检查是否没有以前的实例同时运行。查询如下:Sql server 运行SqlAgent作业时出现权限问题,sql-server,permissions,sql-server-2016,sysadmin,sql-agent-job,Sql Server,Permissions,Sql Server 2016,Sysadmin,Sql Agent Job,当我尝试运行Sql代理作业时,我会检查是否没有以前的实例同时运行。查询如下: IF NOT EXISTS(SELECT 1 FROM msdb.dbo.sysjobactivity ja LEFT JOIN msdb.dbo.sysjobhistory jh ON ja.job_hist
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
但是,我得到了一个错误
对对象“syssessions”、数据库“msdb”、架构“dbo”的选择权限被拒绝。[SQLSTATE 42000](错误229)
步骤失败了。作业步骤由具有sysadmin
权限的帐户运行
我还试图在msdb
数据库中为该帐户授予db\u owner
权限。不过,面对同样的问题
您能指导我如何解决此权限问题吗?我认为您不需要手动检查是否有其他实例正在运行 示例作业步骤:
SELECT 1;
WAITFOR DELAY '00:00:45';
并尝试运行两次:
EXEC msdb.dbo.sp_start_job 'job'
-- Job 'job' started successfully.
EXEC msdb.dbo.sp_start_job 'job'
Msg 22022,16级,状态1,第3行
SQLServerAgent错误:
运行作业()的请求被拒绝,因为该作业已从的请求运行。
谢谢再次启动同一作业不会启动该作业。我们担心并发性问题。