1,如订阅服务器无此行数据
在分发机中会有如下提示:
"The row was not found at the Subscriber when applying the replicated command."
找到该行,手动添加。添加成功后,数据会同步到订阅机。但这时同步的JOB也停止了,查看
同步状态,必须手工启用job。
如果这个错误无法修复,后续的数据就无法同步到订阅机。
Replication Agents Checkup (复制代理审查)
Reinitialize Subscriptions Having Data Validation Failures (数据校验失败时重新初始化)
Distribution Clean Up (分发清理)
Agent History Clean Up (代理执行SQL历史数据清理)
Replication Monitoring Refresher (复制监视刷新)
distribution cleanup job’
作业用于清除distribution库中事务(已经/没有同步到订阅的事务,这取决于具体参数),如果禁止该作业,那么由log reader agent传递到分发库的数据就会越积越多. 而distribution agent会扫描相应的表,将数据传递到订阅库.因此过多的数据会造成distribution agent效率低下,一起复制的延迟等…, 并且也会引起distribution库文件扩张.
‘distribution cleanup job’默认每10分钟执行一次,调用下面这个存储过程来完成清除工作.
EXEC dbo.sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = 72
@min_distretention 表示当事务被传送到订阅后,最小保留的时间. 这里是0小时,表示事务被传递到订阅后会被立刻删除
@max_distretention 表示没有被传递到订阅的事务的最长保留时间.这里是72小时,即如果一些事务在72后仍然没有被传递到订阅,会被删除掉,这会造成发布库和订阅库数据的不一致.
sp_MSdistribution_cleanup会去移除过期的订阅并---删除MSrepl_commands表和MSrepl_transactions表中的数据,并删除相应的快照文件
‘Agent History Clean Up’作业会清除历史记录:
从 MSmerge_history 中删除了 0 条历史记录。
从 MSmerge_articlehistory 中删除了 0 条历史记录。
从 MSsnapshot_history 中删除了 0 条历史记录。
从 MSlogreader_history 中删除了 0 条历史记录。
从 MSdistribution_history 中删除了 0 条历史记录。
从 MSqreader_history 中删除了 0 条历史记录。
从 MSrepl_errors 中删除了 0 条历史记录。
从 sysreplicationalerts 中删除了 0 条历史记录。
从 MStracer_tokens 中删除了 0 条历史记录。
Reinitialize Subscriptions Having Data Validation Failures
(数据校验失败时重新... All Subscriptions (所有订阅)
Replication agents checkup
sp_replication_agent_checkup
检查每个分发数据库的复制代理程序,这些复制代理程序正在运行但在指定的心跳信号间隔内没有历史记录。
在分发机中会有如下提示:
"The row was not found at the Subscriber when applying the replicated command."
找到该行,手动添加。添加成功后,数据会同步到订阅机。但这时同步的JOB也停止了,查看
同步状态,必须手工启用job。
如果这个错误无法修复,后续的数据就无法同步到订阅机。
Replication Agents Checkup (复制代理审查)
Reinitialize Subscriptions Having Data Validation Failures (数据校验失败时重新初始化)
Distribution Clean Up (分发清理)
Agent History Clean Up (代理执行SQL历史数据清理)
Replication Monitoring Refresher (复制监视刷新)
distribution cleanup job’
作业用于清除distribution库中事务(已经/没有同步到订阅的事务,这取决于具体参数),如果禁止该作业,那么由log reader agent传递到分发库的数据就会越积越多. 而distribution agent会扫描相应的表,将数据传递到订阅库.因此过多的数据会造成distribution agent效率低下,一起复制的延迟等…, 并且也会引起distribution库文件扩张.
‘distribution cleanup job’默认每10分钟执行一次,调用下面这个存储过程来完成清除工作.
EXEC dbo.sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = 72
@min_distretention 表示当事务被传送到订阅后,最小保留的时间. 这里是0小时,表示事务被传递到订阅后会被立刻删除
@max_distretention 表示没有被传递到订阅的事务的最长保留时间.这里是72小时,即如果一些事务在72后仍然没有被传递到订阅,会被删除掉,这会造成发布库和订阅库数据的不一致.
sp_MSdistribution_cleanup会去移除过期的订阅并---删除MSrepl_commands表和MSrepl_transactions表中的数据,并删除相应的快照文件
‘Agent History Clean Up’作业会清除历史记录:
从 MSmerge_history 中删除了 0 条历史记录。
从 MSmerge_articlehistory 中删除了 0 条历史记录。
从 MSsnapshot_history 中删除了 0 条历史记录。
从 MSlogreader_history 中删除了 0 条历史记录。
从 MSdistribution_history 中删除了 0 条历史记录。
从 MSqreader_history 中删除了 0 条历史记录。
从 MSrepl_errors 中删除了 0 条历史记录。
从 sysreplicationalerts 中删除了 0 条历史记录。
从 MStracer_tokens 中删除了 0 条历史记录。
Reinitialize Subscriptions Having Data Validation Failures
(数据校验失败时重新... All Subscriptions (所有订阅)
Replication agents checkup
sp_replication_agent_checkup
检查每个分发数据库的复制代理程序,这些复制代理程序正在运行但在指定的心跳信号间隔内没有历史记录。
此存储过程在分发服务器的任何数据库上执行。
[@heartbeat_interval =] 'heartbeat_interval'
是代理程序在不记录进度消息的情况下可以运行的最长分钟数。heartbeat_interval 的数据类型为 int,默认值为 10 分钟。
返回代码值
sp_replication_agent_checkup 为检测到的每个置疑代理程序生成 14151 号错误。它还记录关于该代理程序的失败历史记录消息。
1.当应用复制一段时间后,碰到了这样一个问题,在插入nvarchar(max)类型的字段值时,报异常"Length of LOB data (92472) to be replicated exceeds configured maximum 65536. The statement has been terminated." (“要复制的 LOB 数据的长度(92472)超出了配置的最大值 65536。语句已终止。”)
经过查找一番资料,发现服务器配置选项里有一项”Max Text Repl Size”(“最大文本复制大小”),它的默认值为65536,可以通过修改这个值解决上面的问题。
通过SELECT * FROM sys.configurations WHERE NAME LIKE '%repl%'
查询得到max text repl size (B) 最大值为2147483647,可以结合实际情况设置小于等于这个数值的值。
例如:
sp_configure 'max text repl size', '9000000'
经过查找一番资料,发现服务器配置选项里有一项”Max Text Repl Size”(“最大文本复制大小”),它的默认值为65536,可以通过修改这个值解决上面的问题。
通过SELECT * FROM sys.configurations WHERE NAME LIKE '%repl%'
查询得到max text repl size (B) 最大值为2147483647,可以结合实际情况设置小于等于这个数值的值。
例如:
sp_configure 'max text repl size', '9000000'