原文:SQLServer 使用sp_repldone标识所有未分发的事务为已分发

对于发布数据库的数据大量操作时,会使日志扫描并读取太多,会导致分发堵塞很久。也有一些解决方法,参考 《SqlServer 复制中将大事务分成小事务分发》 , 《SqlServer大量更新引起同步链延时问题》 。当然也可以使这些数据不分发,尤其是新表,数据尚未让用户使用,可以在日志读取器跳过扫描标识为 “复制” 的事务。

注: 以下模拟操作,操作都在发布数据库执行!

1. 将队列读取器代理  -Continuous 去掉,使日志读取器不连续扫描事务日志
2. 更新数据
3. 启用日志读取器,数据正常同步到订阅中
4. 再次更新数据,执行以下操作

将队列读取器代理  -Continuous 去掉的操作如下:

过程脚本如下,不详细说明:

--  因为日志读取器停止,分发表还没有刚才更新的记录
SELECT * FROM distribution.dbo.MSrepl_commands
SELECT * FROM distribution.dbo.MSrepl_transactions--  但是事务日志中标识为复制(REPLICATE) 的日志增多了
SELECT count(*) FROM ::fn_dblog(NULL, NULL) WHERE Description='REPLICATE'--  查看最早的分布式和非分布式复制事务
--  https://msdn.microsoft.com/zh-cn/library/ms182792.aspx
DBCC OPENTRAN() WITH TABLERESULTS; REPL_DIST_OLD_LSN        (535:23:10)
REPL_NONDIST_OLD_LSN    (535:26:1)--  转换上面的整数为16进制
SELECT cast(cast(535 as int) as binary(4)) + cast(cast(23 as int) as binary(4)) + cast(cast(10 as int) as binary(2))
SELECT cast(cast(535 as int) as binary(4)) + cast(cast(26 as int) as binary(4)) + cast(cast(1 as int) as binary(2))(534:2536:18) >>> 0x00000217:00000017:000A
(534:2552:1) >>>  0x00000217:0000001A:0001--  在事务日志中的记录
select [Current LSN],[Operation],[Transaction ID],Left([Description],20)
from::fn_dblog('0x00000217:00000017:000A','0x00000217:0000001A:0001')--  将事务日志中标识为复制的记录全部标记为已分发,之后日志读取器将不扫描这些记录
--  ( 只有当 xactid 和 xact_seqno 都为 NULL 时,reset 才有效。)
--  https://msdn.microsoft.com/zh-cn/library/ms173775.aspx
exec sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1@reset = 1 则日志中所有复制的事务将标记为已分发;
@reset = 0 则事务日志将重置为第一个复制的事务,事务将重新读取和发布;--  查看当前没有分发的事务(保留在事务日志中尚未发送到分发服务器的事务)
--  https://msdn.microsoft.com/zh-cn/library/ms175114.aspx
exec sp_replshowcmds--  再查看打开的事务,事务也不存在了
dbcc opentran () with tableresults; --  刷新项目缓存(为提高效率,项目定义存储在缓存中)
--  https://msdn.microsoft.com/zh-cn/library/ms174992(v=sql.120).aspx
exec sp_replflush--  此时再次更新其他行数据,启用日志读取器代理,该行数据能正常同步到订阅;之前未同步的,则不会同步.

最后把 -Continuous 添加会日志读取器中!完成!(或者停止日志读取器代理也可以)

参考:Using sp_repldone to mark all pending transactions as having been Replicated

SQLServer 使用sp_repldone标识所有未分发的事务为已分发相关推荐

  1. sqlserver中查找长时间未提交事务

    无论是有意无意,如果事务在数据库中保持打开,则它会阻塞其他进程对修改后的数据进行操作.同样,对事务日志进行备份也只会截断不活动事务的那部分事务日志,所以打开的事务会导致日志变多(甚至达到物理限制),直 ...

  2. SQLServer 2008中事务日志已满问题处理

    错误描述 错误原因 事务日志介绍 排查日志已满问题 解决方法 方法一:界面方式收缩日志 第一步:调整恢复模式 第二步:收缩日志文件 选项说明 第三步:调整恢复模式 方法二:命令行方式收缩日志 另请参阅 ...

  3. mysql 分发_装配MySQL源代码分发

    作者:天极软件 泉源:天极软件 你需求下列东西机关并装配MySQL源代码:GNU gunzip解紧缩该分发. 一个适宜的tar解包分发.GNU tar已知可以义务. 一个能运转的ANSI C 编译器. ...

  4. sqlserver 事务日志已满和'PRIMARY'

    sqlserver 事务日志已满和'PRIMARY' 1.出现这个问题是日志文件达到了单个文件的极限了要解决这个问题有两个方法 1.删除日志:解决方法是这样子的:DUMP TRANSACTION 库名 ...

  5. 检查点(Checkpoint)过程如何处理未提交的事务

    每次我讲解SQL Server之前,我都会先简单谈下当我们执行查询时,在SQL Server内部发生了什么.执行一个SELECT语句非常简单,但是执行DML语句更加复杂,因为SQL Server要修改 ...

  6. SQLserver 事务日志已满解决方法

    问题: 数据库 'MSDB' 的事务日志已满.若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列. 解决方法: 在tempdb库属 ...

  7. android 事件分发 代码解析,Android事件分发之源码分析

    原文首发于微信公众号:躬行之,欢迎关注交流! 上篇文章中叙述了 Android 事件分发的大致流程,下面从 Activity.ViewGroup.View 三个方面介绍事件的相关方法,小节如下: Ac ...

  8. 剑未佩妥,出门已是江湖!聊聊2019学习和工作

    剑未佩妥,出门已是江湖.酒尚余温,入口不识乾坤. 2019年可以说是对我来说是特别重要的一年.正式结束了自己的学生时代,从事了一个自己不讨厌的职业,遇到了一群优秀的人.借年终总结的浪潮,说说对于201 ...

  9. java用虹软人脸识别SDK实现人脸识别,运行ArcSoft的Java版本Demo出错,未检出人脸(已解决)

    java用虹软人脸识别SDK实现人脸识别,运行ArcSoft的Java版本Demo出错,未检出人脸问题已解决!!! 原因: 虹软人脸识别SDK版本问题! 下载的java版本的demo的SDK是arcs ...

  10. 免费分享-【APP分发系统仿fir.im】新版APP应用分发新版源码支持分发托管运营版源码

    [APP分发系统仿fir.im]新版APP应用分发新版源码支持分发托管运营版源码 修复远程被恶意删数据库,支持封装仿fir.im分发APP应用分发托管平台经营版源码,一键访问域名直接安装. 纠正iOS ...

最新文章

  1. 【系统平台】模拟器-通道-模型-图形配置
  2. SpringBoot集成OpenOffice实现doc文档转html
  3. python-map函数
  4. java赋值语句_Scala守卫语句的集中用法
  5. lucene学习笔记_学习Lucene
  6. 关于C语言中的'\?'和%%
  7. 怎样删了系统升级服务器,如何优雅的搞垮服务器,再优雅的救活
  8. 【转载】QT 的信号与槽机制介绍
  9. linux用命令行运行matlab的.mat文件
  10. ROC曲线与AUC区域的理解与实践
  11. JAVA程序设计基础(第六版)第六章习题 6.13
  12. Easy AR初级开发教程
  13. Redis学习之lpush命令
  14. 读论文——MoCo(何恺明 CV中的无监督)
  15. 2021-02-26构造函数
  16. Mysql8.0.28-winx64安装
  17. MacBook安装Windows系统后耗电快的原因在这里
  18. 秒云与趋动科技联合发布容器云平台与GPU资源池化整体解决方案
  19. android progressbar 代码,android ProgressBar纯java样式修改
  20. IaaS私有云数据中心系统设计-罗逸秀(IaaS 云数据中心)

热门文章

  1. 金蝶K3老单新增自定义菜单按钮
  2. react native 第三方组件react-native-swiper 轮播组件
  3. 常见批处理作业调度算法
  4. 网站改版进行时,需要注意的
  5. 转:Subversion TortoiseSVN: Installed and started on Windows 2003 server and local machines
  6. 瑞典ENEA参展IIC,奏起OSE/Linux混合途径乐章【ZZ】
  7. 论文阅读:Siam-RPN
  8. Python-二分及bisect模块
  9. requirej入门(二)
  10. [C++面试题]之冒泡排序