我有一个调用 sql 作业的存储过程,但如果 2 个用户同时调用该存储过程,该作业就会失败,所以这就是我想要做的:
- 首先检查 sql 作业是否正在运行
- 如果第一个调用完成,则仅执行第二个调用。
我见过一些示例,您可以在其中找出作业是否正在运行,但似乎无法找出将第二个调用置于保留状态并仅在第一个调用完成时执行。
DECLARE @job_name NVARCHAR(MAX) = 'mySQLJob'
EXEC msdb.dbo.sp_start_job @job_name = @mySQLJob
我收到的错误类似于“作业已在运行”
最佳答案
sp_help_job 可以为您提供此信息
EXEC msdb..sp_help_job @job_name = 'mySQLJob', @job_aspect = 'JOB'
current_execution_status 值 - 1 执行 - 2 等待线程 - 重试间隔 3 次 - 4 空闲 - 5 次暂停 - 6 已过时 - 7 个执行完成操作
关于sql - 检查sql作业是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42727266/