SQL 队列,在未来日期执行 SP

问题描述 投票:0回答:2

我正在使用 SQL Server 2005...

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

流程:

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

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

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

sql sql-server-2005 message-queue messaging
2个回答
0
投票

您看过SQL Server Service Broker吗?

Service Broker 教程

更新:您可以设置消息优先级,但我认为您无法在特定日期之前本地提取。除了根据定义,如果您将两条消息放入队列中,最旧的消息将首先从队列中“弹出”,即它们按升序日期顺序删除。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.