0

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

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

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

但是,如果对等服务器关闭,则消息将在 sys.transmission_queue 中等待。

对话对话中的消息顺序得到保证,但我能否确保对话对话将按照我创建它们的顺序进行处理?

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

我在以下假设下工作:

  1. 我应该为每笔交易进行一次对话。

  2. 解决方案的形式必须是通过sql service broker进行复制。(这是在数据库的其他部分完成的,因此使用替代策略的任何理由都必须令人信服)。

4

1 回答 1

0

您应该使用 Broker Priority。http://msdn.microsoft.com/en-us/library/bb934170.asp

于 2011-04-12T13:40:02.860 回答