日期:2014-05-18  浏览次数:20340 次

SQL 2008 replication问题
昨天在更新数据库的时候遇到一个奇怪的问题,先描述如下:
环境:一台sql server 2008数据库服务器,操作系统为windows 2008 server
此服务器作为replication的发布服务器,以下简称2008
另外一台sql server 2005数据库服务器,操作系统为windows 2003 server
此服务器为订阅服务器,以下简称2005

采用日志传送的方式实现数据同步。

数据库中有表A,结构为 id, data1,data2,data3,data4
因为前面replication没有及时启动,出现了一条数据没更新到订阅服务器上的情况
2008里有下面的数据:
id, data1,data2,data3,data4
1 1.1 1.2 1.3 1.4
但是2005里数据为:
id,data1,data2,data3,data4
1 1.1 NULL 1.3 1.4

以下为问题:
我在2008里(replication 的发布服务器)执行如下语句:
update A set data2 = 1.2 where id = 1
此时2005里的数据并没有被更新!!!!!

什么原因?

后续:
在2008里执行
delete A where id = 1
结果2005里id=1的数据被删除
再执行insert A (id,data1,data2,data3,data4)values(1,1.1,1.2,1.3,1.4)
2005里数据也被新增进来,一切正常

现在怀疑是2008的replication里做了优化
对于第一步里的操作,不会传送日志,但是没有找到相关文档
有遇到此类问题的或者有相关文档的,一起分享下

------解决方案--------------------
2008没用过,友情帮顶.
------解决方案--------------------
探讨
2008没用过,友情帮顶.

------解决方案--------------------
Apress-Pro SQL Server 2008 Replication (2009)
去ITPUB上面下
------解决方案--------------------
2008没用过,关注
不过update这样的动作,再怎么优化,也应该同步一致才对吧!

------解决方案--------------------
2008好东西啊,不过俺还是用的2000多 和 2005用了那么几次

update A set data2 = 1.2 where id = 1
这句好像有问题,因为2008的A中DATA2已经是1.2了,你再UPDATE都是没有改变它的值
应该是没有触发吧


而DELETE AND INSERT是改变了值的, 
一家之言!!