好学IT学院:IT信息技术分享交流平台
来源:IT专家网  作者:Susan  发布时间:2009-09-30  ★★★加入收藏〗〖手机版
摘要:数据库复制时企业级数据库应用中必须要实现的一个问题。不过可惜的是,到现在不少品牌的数据库解决方案仍然有不少的漏洞。在微软的SQLServer2008数据库中对此做了不少的改善。如在2008的版本中,就实现了在数据库同步功能中检测冲突。…

三、发现SQL Server对等复制冲突后的处理方式

当冲突检测机制检测到冲突后,该如何处理呢?笔者建议,最好按如下几个步骤处理。

首先数据库管理员应该配置冲突检测警报。也就是说,无论分发代理是否应用更改,数据库系统都应该向管理员或者用户发出警报,告知他们产生了冲突。在SQLServer2008中,当对等复制发生冲突时,会引发对等冲突检测警报。通常情况下,笔者都建议启用并配置这个警报,以便管理员在发生冲突时第一时间得到相关的信息。当启用警报功能后,如果发现有冲突,则数据库代理将会执行已经定义的任务或者向管理员所指定的邮箱发送电子邮件或者通过发生及时消息的方式向管理员或者用户发送警报,进行响应。同时,也可以将这些警报信息写入到Windows应用程序日志中。

其次需要考虑冲突数据的处理方式。以上只是警报,而不会对数据产生任何实质性的影响。最终对于冲突的数据要如何处理,还是要有管理员来定。在SQLServer2008数据库环境中,有两种处理方式,分别为停止应用所做的更改和继续应用所作的更改。默认情况下,数据库推荐的是停止应用所做的更改。如上面所述,无论是通过企业管理器还是通过存储过程来启用冲突检测机制,默认情况下分发代理都是会停止应用所做的更改。如果数据库管理员觉得这么做不合适的话,也可以通过允许分发代理继续应用所作的更改来再次同步节点。不过这么做的话,可能会引起一系列难以预料的问题。如此时很有可能导致数据的不一致。当出现这种情况的时候,必须在具有最高优先级的节点上手工的更新行,然后允许从该节点传播所做的更改。更改后如果拓扑中不再有发生冲突的更改,则所有节点的数据才会保持一致。所以,不在万不得已的情况下,不用采用这种处理方式。

四、对等复制冲突检测机制使用的限制

虽然SQLServer2008数据库中实现了对等复制的冲突检测机制,不过其在配置的时候也有一些限制条件。主要的限制条件有两个。一是对等复制中所有涉及到的可更新数据的节点都必须采用2008版本的数据库系统。也就是说必须要先将其他的数据库版本进行升级。二是必须要在所有的节点上都启用这个冲突检测机制。只要有一台没有启动的话,则就可能会有漏网之鱼。