2010-09-02 54 views
0

所以,我有一个'A'服务器和'B'服务器。我们正在使用SQL Service Broker执行复制。我们拥有的应用程序需要将数据写入“A”服务器或“B”服务器。 (其中一个可能关闭,另一个应该接管)我可以确保SQL服务代理中的对话对话顺序吗?

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

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

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

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

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

我在以下假设的工作:

  1. 我应该有一个对话框 每笔交易的谈话。

  2. 解决方案的格式必须为 通过sql service broker的方式进行复制。 (这是在其他 部分数据库中完成的,因此使用替代策略的任何原因 必须是 引人注目)。

+0

您能指出您的自定义解决方案和数据库镜像之间最重要的区别,以及为什么选择不使用后者? – 2010-09-03 15:45:57

+0

这不是我的选择。我正在为现有系统添加功能。我有一些为我的部分创建的新表,以及一些与其他子系统共享的表。其他子系统以类似的方式将数据复制到对等服务器,因此如果要选择新策略(如镜像),那么采用两种不同的复制策略是合适的,还是重写代码需要多少成本属于其他项目? (后者几乎肯定不会发生。) – 2010-09-03 18:38:00

回答

相关问题