SQL 2005 事务执行之后再同步会出问题?

所得寺内 2011-01-15 01:18:41
是这样的,有2个服务器,之间A做的是合并发布,B是订阅服务器,两者之间同步(1分钟一次大约)。
现在在B服务器上有更新一个表,且更新好几行数据(也就是把某一行的某些字段更新到另外一个符合条件的行,然后把旧的行的那些字段值清空,也就2行数据而已),如果把这两个更新操作分开来执行,A与B两个服务器都完全可以同步且数据是没有问题的。
但现在做了一个存储过程,把这两个更新操作放在这个事务中一起执行了,但问题也出来了,B服务器更新是可以的,但一同步就出问题:B上更新完毕之后1分钟之内数据是正常的,但当同步过程完成之后有可能(偶尔会出现,并不是全部,大部分时间同步都是正常的)会出现A、B服务器上的这两行数据被更新的这几个字段都是空值(旧的数据行原来不是空的,新的是空的,更新完了之后旧的是空的,新的不是空的),不知道大家是不是也碰到过这样的问题?

在同一台服务器上两个不同的数据库之间同步一个表也会出现这种情况,分开更新就没问题,合起来到一个事务中就会丢数据。
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
所得寺内 2011-12-27
  • 打赏
  • 举报
回复
谢谢你的回复,虽然无法解决这个问题。
叶子 2011-01-15
  • 打赏
  • 举报
回复
合起来到一个事务中数据有问题就是 这个事务有问题。

仔细检查一下这个事务的逻辑是不是有问题。

叶子 2011-01-15
  • 打赏
  • 举报
回复
没看太懂,是说同步更新?

DECLARE @table TABLE
(
col1 VARCHAR(20) ,
col2 VARCHAR(20)
)
INSERT INTO @table SELECT 'a' ,NULL
SELECT * FROM @table
UPDATE @table
SET col1 = col2 ,
col2 = col1
SELECT * FROM @table

/*
更新前:
col1 col2
-------------------- --------------------
a NULL
更新后:
col1 col2
-------------------- --------------------
NULL a
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧