如何在 SQL Server 2008 中自动重新启动已停止的存储过程



我有一个必须不断运行的存储过程。偶尔,由于当前未知的原因,它会停止。如果发生这种情况,如何使其自动重新启动 SP?谷歌搜索并没有多大帮助,因为所有的结果都是关于重新启动服务器,而不是存储过程。感谢您提供的任何帮助。

这是一个 SQLCLR 存储过程,如果这有什么区别的话。

您无法自动重新启动它。内置的此类功能不存在,因为它不是过程的真正目的。

我将设置一个每 N 秒(N = 1 或 15 左右)执行一次的 SQL Server 代理作业,并在需要时重新启动该过程。

您需要一种方法来检测它是否仍在运行。您可以通过让 sproc 在特殊标记表上保持独占锁来做到这一点。检查过程可以从该表中读取WITH (READPAST)。如果没有行返回,则 sproc 仍然持有锁,因此它必须处于活动状态。

编写另一个 sp 来检查第一个 sp 是否正在运行,如果没有,则将其启动。 好奇心让我瘫痪,这东西有什么作用?

只要你有一台Rube Goldberg机器,不妨让它更有趣。

如下方式重写过程:

  1. 从服务代理队列中弹出消息。"为什么"将在以后变得明显。
  2. 将消息放入服务代理队列中。不管它是什么。
  3. 无论处理器现在做什么。
现在,使存储过程

成为队列的激活存储过程,设置 max_queue_readers = 1,然后您就可以开始比赛了。

最新更新