sql - 检查sql作业是否正在运行

标签 sql sql-server t-sql

我有一个调用 sql 作业的存储过程,但如果 2 个用户同时调用该存储过程,该作业就会失败,所以这就是我想要做的:

  1. 首先检查 sql 作业是否正在运行
  2. 如果第一个调用完成,则仅执行第二个调用。

我见过一些示例,您可以在其中找出作业是否正在运行,但似乎无法找出将第二个调用置于保留状态并仅在第一个调用完成时执行。

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/

相关文章:

t-sql - tsql - self 引用

PHP/SQL 投票和统计结果

sql - STRING_AGG with distinct without sub-query

sql - 带有 STUFF 函数的 WHERE 子句

mysql - 获取 mysql 复杂查询的帮助

sql-server - 1 个表上的 T-SQL 多重联接

c# - SqlCommand.Parameters.AddWithValue 未返回正确结果

mysql - SQL 自连接空值

mysql - 我是否应该打破规范化规则并添加额外的 FK

sql - Postgresql:如何在数据库触发器中转义单引号?