代码之家  ›  专栏  ›  技术社区  ›  Matt Brunell

我可以确保SQL Service Broker中对话的顺序吗?

  •  0
  • Matt Brunell  · 技术社区  · 15 年前

    所以,我有一个“A”服务器和一个“B”服务器。我们正在使用SQL Service Broker执行复制。我们拥有的应用程序需要将数据写入“A”服务器或“B”服务器。(一个可能被击倒,另一个应该接管)

    数据只在存储过程中写入数据库,存储过程包装在事务中以保持表中的数据一致。

    其中一个事务将包括发送到对等服务器的所有消息。因此,在我的应用程序代码中,当我尝试提交事务时,它应该将所有数据写入表,并将消息发送到对等服务器。

    但是,如果对等服务器关闭,那么消息将在sys.transmission_队列中等待。

    对话对话中的消息顺序是有保证的,但是我能确保对话会话将按我创建它们的顺序进行处理吗?

    例如,如果“B”服务器关闭,用户将数据写入“A”服务器,我可能会遇到问题。一旦“B”服务器再次备份,如果这些对话的处理顺序不对,它们可能无法正常工作。(他们可以尝试用坏的外键或类似的东西插入数据)。

    我在以下假设下工作:

    1. 我应该有一个单独的对话 每个事务的会话。

    2. 解决方案的形式必须为 通过SQL服务进行复制 经纪人。(这是在其他 数据库的一部分,所以任何原因 要使用替代策略,必须 令人信服)。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Dalex    14 年前

    您应该优先使用用户代理。 http://msdn.microsoft.com/en-us/library/bb934170.asp