SQLServer 可更新订阅数据冲突的一个原因
可更新订阅为什么有冲突?
可更新订阅中,当升级增加一个字段时,通常在发布服务器的发布数据库中增加,对表增加字段后,发布自动同步到订阅数据库中(复制架构更改=true)。但是,如果此时在订阅数据库进行DML操作,数据将不会同步到发布表中;这些差异数据在订阅表中如果一直未进行DML 操作,也就不会再次同步到发布中,存在差异。
复制配置环境:
可更新订阅事务复制
发布和订阅冲突都以订阅为准
使用排队更新
在订阅操作
冲突测试结果(以下为: 当数据存在不一致的情况下,对订阅再次操作会引起冲突,冲突策略会自动解决):
当发布数据不存在,订阅数据存在时,此时更新订阅数据:(排队更新冲突)
当发布和订阅主键相同,msrepl_tran_version不同时,此时更新订阅数据:(排队更新冲突)
以上两种情况结果:
在发布冲突,冲突表记录值都为最新值,订阅数据更新或插入到发布表中。
当发布数据不存在,订阅数据存在时,此时删除订阅数据:(排队更新冲突)
当发布和订阅主键相同,msrepl_tran_version不同时,此时删除订阅数据:(排队更新冲突)
以上两种情况结果:
删除操作同步到发布时冲突。
冲突入选方:
此行不再存在于“[dbo].[TestTab]”中。 [[dbo].[TestTab]].[qcfttabrowid] 中唯一 ID 的值是“8d335a44-36a0-432c-bba4-4979df3c804e”。
冲突落选方:
尝试删除此位置上的此数据时出现上述错误,原因可能是此删除操作违反了一个或多个约束。如果您忽略此冲突,则应通过其他方式加以解决。您可以记录此冲突的详细信息,然后将日志条目发送给系统管理员。
架构更如何防止冲突?
若要在支持更新订阅的发布中的表上进行架构更改,必须在发布服务器和订阅服务器中停止该表上的所有活动,还必须将挂起的数据更改传播到所有节点,然后才能进行架构更改。这可以确保未完成的事务不会与挂起的架构更改发生冲突。架构更改传播到所有节点后,可以在已发布的表上恢复活动。如何停止复制拓扑(复制 Transact-SQL
编程)
本人测试了一种解决方案:SQLServer 可更新订阅数据在线架构更改(增加字段)方案
参考: 事务复制的可更新订阅
SQLServer 可更新订阅数据冲突的一个原因的更多相关文章
- SqlServer 可更新订阅升级字段队列数据丢失原因
原文:SqlServer 可更新订阅升级字段队列数据丢失原因 之前简单描述过数据冲突发生的原因:SQLServer可更新订阅数据冲突的一个原因 ,但具体内部原理是怎么丢失的还不清楚,今天补充说明.可更 ...
- SQLServer 可更新订阅数据在线架构更改(增加字段)方案
原文:SQLServer 可更新订阅数据在线架构更改(增加字段)方案 之前一直查找冲突发布和订阅数据不一致的原因,后来发现多少数据库升级引起,因为一直以来都是在发布数据库增加字段,订阅也会自动同步.在 ...
- SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败
原文:SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败 今天发现队列读取器代理不停地尝试启动但总是出错: 其中内容如下: 队列读取器代理在连接"Publicati ...
- SqlServer 使用脚本创建分发服务及事务复制的可更新订阅
原文:SqlServer 使用脚本创建分发服务及事务复制的可更新订阅 [创建使用本地分发服务器] /************************[使用本地分发服务器配置发布]*********** ...
- SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)
原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...
- sqlserver关于发布订阅replication_subscription的总结
(转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...
- 最简单的SQLserver,发布订阅教程,保证一次就成功
最简单的SQLserver,发布订阅教程,保证一次就成功 发布订阅用来做数据库的读写分离,还是很好用的 当单台数据库的压力太大时,可以考虑这种方案,一主多从,主服务器的数据库只管写入,其他的数据库都是 ...
- 转载:性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
这段时间AX查询变得非常慢,每天都有很多锁. 最后发现是数据库统计信息需要更新. ----------------------------------------------------------- ...
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
原文:性能优化--统计信息--SQLServer自动更新和自动创建统计信息选项 原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server-a ...
随机推荐
- Spring MVC--@RequestMapping
2.1 @RequestMapping @RequestMapping是SpringMVC的核心注解,负责访问的url与调用方法之间的映射; @RequestMapping可以放在类和方法上; @Re ...
- 简单实现的Servlet文件上传,并显示
http://my.oschina.net/Barudisshu/blog/157481
- iOS开发系列之三 - UITextField 使用方法小结
// 初始化输入框并设置位置和大小 UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, 30 ...
- HDU 1501 - dp
传送门 题目大意: 问两个词能不能加错拼成一个第三个词. 题目分析: dp方程还是很好想:dp[i][j]表示第一个词前i个和第二个词前j个能不能拼成第三个词的前i+j个. 初始化如果s1[1] == ...
- 电子商务系统的设计与实现(十):DWZ框架与第三方分页组件整合
晚上,就是刚刚,在后端管理系统中使用DWZ框架. 先是,直接使用官网网站的Demo,dwz-jui,与编程语言无关的纯静态的那个原始项目. 很快就搭建好了左侧菜单,打开菜单后,出现Tab页面,然后显示 ...
- 【codeforces 791C】Bear and Different Names
[题目链接]:http://codeforces.com/contest/791/problem/C [题意] 给你n-k+1个限制 要求 a[i]..a[i]+k-1里面有相同的元素,或全都不同; ...
- spark rdd持久化的简单对比
未使用rdd持久化 使用后 通过对比可以发现,未使用RDD持久化时,第一次计算比使用RDD持久化要快,但之后的计算显然要慢的多,差不多10倍的样子 代码 public class PersistRDD ...
- 【水水水】【洛谷 U4566】赛车比赛
题目背景 kkk在赛车~ 题目描述 现在有N辆赛车行驶在一条直线跑道(你可以认为跑道无限长)上.它们各自以某种速度匀速前进,如果有两辆车A车和B车,A车在B车的后面,且A车的速度大于B车的速度,那么经 ...
- dzone Cloud Zone
dzone Cloud Zonehttps://dzone.com/cloud-computing-tutorials-tools-news有一些统计:https://dzone.com/refcar ...
- Xbin-Store(分布式商城)项目所用Linux服务系列 FastDFS安装(五)
系列 Xbin-Store(分布式商城)项目所用Linux服务系列 MySQL安装(一) Xbin-Store(分布式商城)项目所用Linux服务系列 Redis集群安装(二) Xbin-Store( ...