0

我的问题(场景):

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

但问题是我的客户也是一名开发人员,他想找到一种方法来解决这个问题,并找到一种等待超过 24 小时以减少开发时间的方法。

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

我知道,由于这个“WAITFOR”被限制为 24 小时,因此必须存在性能问题,因为这个“WAITFOR”执行次数会更高(例如 2000)。

我的问题:

  1. 有没有办法让存储过程超过 24 小时。可以说超过14天。
  2. 如果没有办法解决这个问题,我应该如何为这个问题辩护,我可以向我的客户提供哪些事实,例如性能问题,,

这就是我的想法,由于这种等待仅限于 24 小时,因此没有其他选择可以提供预期的功能来准确按时执行数据库任务。但这给服务器带来了很大的开销,以跟踪每个“WAITFOR”执行。如果这个超过2000左右,,这对于服务器来说是无法承受的。

可用的最佳选择是让“SQL 代理作业”每天运行一次(如您所愿)并获取与设置WAITFOR相关的值以准时执行某些作业。

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

提前致谢。

4

2 回答 2

4

有没有办法让存储过程超过 24 小时。可以说超过14天。

是的,例如 14 x 24 小时WAITFOR……当然,这将是无法形容的可怕;您正在强制连接在该期间保持打开状态,在该期间消耗服务器上的资源等等。

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

于 2012-07-20T10:30:13.140 回答
0

关于 WAITFOR 限制的问题可以通过简单的方式解决——只需执行几次“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

于 2012-07-20T11:16:00.917 回答