Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 运行SqlAgent作业时出现权限问题_Sql Server_Permissions_Sql Server 2016_Sysadmin_Sql Agent Job - Fatal编程技术网

Sql server 运行SqlAgent作业时出现权限问题

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

当我尝试运行Sql代理作业时,我会检查是否没有以前的实例同时运行。查询如下:

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错误: 运行作业()的请求被拒绝,因为该作业已从的请求运行。


谢谢再次启动同一作业不会启动该作业。我们担心并发性问题。