【问题标题】:SQL Queue, execute SP at a future dateSQL 队列,在未来日期执行 SP
【发布时间】:2011-04-27 05:27:17
【问题描述】:

我正在使用 SQL Server 2005...

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

流程:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    你看过SQL Server Service Broker吗?

    Service Broker Tutorials

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

    【讨论】:

    • 我有一点,但不知道它是否可以根据日期取货,而不是只取下一个可用的物品。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多