等待在MS SQL Server R2中执行超过24小时

时间:2012-07-20 10:21:00

标签: c# sql-server-2008 stored-procedures sql-server-2008-r2 sql-agent-job

我的问题(方案):

已经有一个内置方法调用“WAITFOR”,可以执行例如“存储过程”。这种等待只能在24小时内完成。

但问题是我的客户也是开发人员希望找到解决此问题的方法,并找到一种等待超过24小时以减少开发时间的方法。

已经有一种方法。这可以每天查询一次必要的表格并将必要的电子邮件发送给客户等。

我知道,由于“WAITFOR”限制为24小时,因此“WAITFOR”执行次数越来越高(性能问题)例子2000)。

我的问题:

  1. 有没有办法超过24小时保存存储过程。让我们说超过14天。
  2. 如果没有办法解决这个问题,我应该如何在这个问题上辩护,我可以给客户的事实是什么,如绩效问题,
  3. 这就是我的想法, 由于此等待仅限于24小时,因此没有其他选项可以提供预期的功能来准确地按时执行数据库任务。但这为服务器提供了一个很大的优势,可以跟踪每个“WAITFOR”的执行情况。如果超过2000左右,这对服务器来说是不可能的。

    可用的最佳选择是每天运行一次“SQL代理作业”(如您所愿)并获取与设置 WAITFOR 准确地按时完成一些工作。

    请在这个等待超过24小时的问题上让我更好地理解。去寻找下一个选择。 :((((

    提前致谢。

2 个答案:

答案 0 :(得分:4)

  

有没有办法将存储过程保存超过24小时。让我们   说超过14天。

是的,例如14 x 24小时WAITFOR ..但当然,除了所有描述能力之外,可怕;您强制连接在此期间保持打开状态,在此期间消耗服务器上的资源等等。

您所描述的正是 SQL代理作业的用途,请使用一个。

答案 1 :(得分:0)

关于WAITFOR限制的问题可以通过简单的方式解决 - 只需“等待”几次:

Declare @i int;
Set @i = 0;
While @i < 5
Begin
    Set @i = @i + 1
    WAITFOR DELAY '00:00:01';
End;

如果您想在一段精确的时间段后执行某项工作,则可以使用服务代理(SB)和对话框计时器。 (我只是喜欢SB,所以也许我到处都看到它的用法......)。

在SB中你可以发送消息(可以包括它应该运行的时间,或者你可以只放置固定时间)并启动对话计时器。这样你就不会保持连接打开。

SB BEGIN CONVERSATION TIMERService Broker