SQL Queue,在将来的日期执行SP

时间:2010-10-18 23:21:02

标签: sql sql-server-2005 message-queue messaging activemq

我正在使用SQL Server 2005 ...

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

过程:

table1已更新 table1的触发器触发并查询table2以确定时间戳。此时间戳和代码将添加到队列中。 Something监视此队列并在确定的时间戳处执行代码。如果在从队列中检索项目之前更新了table1,则会删除该项目并将新项目添加到队列中。

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

我希望我能够解释我的问题,如果您有任何问题请告诉我。感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

你看过SQL Server Service Broker吗?

Service Broker Tutorials

更新:您可以设置邮件优先级,但我认为您不能在特定日期之前进行原生提取。除非根据定义,如果您将两条消息放入队列中,则最早的消息将首先从队列中“弹出”,即它们将按升序日期顺序删除。

答案 1 :(得分:0)

SQL-Server代理作业通常用于在特定日期/时间执行任务。我认为可以使用sp创建或修改作业,因此您可以在触发器中使用这些作业。在不利方面,可能存在一些许可问题。触发触发器的用户必须具有创建/修改作业的权限。