【问题标题】:How to Prevent Sql Server Jobs to Run simultaneously如何防止 Sql Server 作业同时运行
【发布时间】:2010-10-19 12:54:56
【问题描述】:

我的 SQL 代理中有一些预定的作业:

  • Job1,每 2 分钟执行一次
  • Job2,每 10 分钟执行一次
  • Job3,每 15 分钟执行一次

如您所见,多个作业可以同时运行。当这些作业同时运行时,会导致 CPU 使用率达到 100%。

有解决办法吗?有没有办法控制同时运行的作业数量?注意:我需要这些作业在其适当的时期大约运行。

【问题讨论】:

  • 您可以使用互斥锁来防止一次运行多个作业 - 您使用什么语言将 SQL 查询发送到数据库?
  • 这些是 sql server 代理中的作业。

标签: sql-server concurrency sql-server-agent


【解决方案1】:

通过sp_getapplock使用会话锁

您要求用户控制的并发,这通常是最好的方法。

如果锁已被另一个作业持有,这允许您等待或中止。我们在一两个地方使用它来阻止多个用户强制相同的任务重叠运行。效果很好。

【讨论】:

  • +1:我希望我几年前就知道这件事。以前,我一直在通过使用状态表来监控给定进程的当前状态,从而推出自己的解决方案来解决这种问题。
  • @John Sansom:很高兴为您服务...如果您可以使用事务锁,它也可以自动释放。
猜你喜欢
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 2013-04-30
相关资源
最近更新 更多