2010-10-18 41 views
0

我正在使用SQL Server 2005 ...SQL队列,在未来执行SP

我想用触发器监视table1以进行更新。在发生此更新时,我将使用来自table2的数据来检查另一个表(表2),我将一个项目放入队列中,以便将来在可变日期执行。可能是从现在起10秒或2小时,这个日期是通过检查表2中的数据确定的。在放入队列中的项目被处理之前,触发器1有可能再次执行。在这种情况下,需要删除队列中的项目,并将新项目放入队列中。

过程:

table1的更新 表1的触发火灾和查询表2确定时间戳。这个时间戳和代码被添加到队列中。有东西监视这个队列,并以确定的时间戳执行代码。如果在从队列中检索项目之前更新了table1,则删除该项目并将新项目添加到队列中。

是否有一个消息服务在那里,将监视日期并在该日期执行,或者我应该创建一个新的SQL作业,每次触发此触发器?或者还有其他选择吗?这需要可扩展。

我希望我能解释我的问题,如果您有任何问题让我知道。谢谢你尽你所能的帮助。

回答

0

你看过SQL Server Service Broker

Service Broker Tutorials

UPDATE:您可以设置优先级的消息,但我不认为你可以在特定日期本身提取。除定义之外,如果您将两条消息放入队列中,则最早的队列将首先从队列中“弹出”,即按照升序排列的日期顺序将其删除。

+0

我有一点点,但不知道它是否可以基于日期拾取物品,而不是仅拾取下一个可用物品。 – 2010-10-19 00:10:12

0

SQL-Server代理作业通常用于在特定日期/时间执行任务。我认为可以用sp创建或修改一个工作,所以你可以在触发器中使用它们。另一方面,可能会有一些权限问题。触发触发器的用户必须具有创建/修改作业的权限。