【发布时间】:2010-09-02 22:09:13
【问题描述】:
所以,我有一个“A”服务器和一个“B”服务器。我们正在使用 SQL Service Broker 来执行复制。我们拥有的应用程序需要将数据写入“A”服务器或“B”服务器。 (一个可能宕机,另一个应该接管)
数据仅在存储过程中写入数据库,这些存储过程包装在事务中以保持表中的数据一致。
其中一个事务将包含要发送到对等服务器的所有消息。因此,在我的应用程序代码中,当我尝试提交事务时,它应该将所有数据写入表中,并将消息发送到对等服务器。
但是,如果对等服务器关闭,则消息将在 sys.transmission_queue 中等待。
对话对话中的消息顺序是有保证的,但我能否确保对话对话将按照我创建它们的顺序进行处理?
例如,如果“B”服务器关闭,我可能会遇到问题,A 用户将数据写入“A”服务器。一旦“B”服务器再次备份,如果这些对话对话被乱序处理,它们可能无法正常工作。 (他们可能会尝试使用错误的外键或类似的东西插入数据)。
我在以下假设下工作:
我应该有一个对话框 每笔交易的对话。
解决方案的形式必须为 通过sql服务进行复制 经纪人。 (这是在其他 数据库的一部分,所以任何原因 使用替代策略必须是 引人注目)。
【问题讨论】:
-
您能否指出您的自定义解决方案和数据库镜像之间最重要的区别以及您为什么选择不使用后者?
-
这不是我的选择。我正在向现有系统添加功能。我有一些为我创建的新表,以及一些与其他子系统共享的表。其他子系统以类似的方式将数据复制到对等服务器,因此如果要选择新策略(如镜像),那么采用两种不同的复制策略是否合适,或者重写代码需要多少成本属于其他项目? (后者几乎肯定不会发生。)
标签: sql-server tsql replication service-broker