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