Replication--复制延迟的诊断和解决
--==================================================================== --检查当前服务上那些数据库搭建了发布 SELECT name,is_published FROM sys.databases WITH(NOLOCK) WHERE is_published = 1 AND state = 0 --==================================================================== --检查发布设置,在发布的数据库上运行 SELECT name AS ReplicationName, [immediate_sync], [allow_anonymous] FROM [dbo].[syspublications] --==================================================================== --将所有事务发布设置为immediate_sync=0,allow_anonymous=1时, --复制生成的命令一旦发送给所有订阅服务器后,立即删除,从而减少分发库保存的命令数。 exec sp_changepublication @publication = '发布名称' , @property = 'allow_anonymous' , @value = false go sp_changepublication @publication='发布名称', @property='immediate_sync', @value='false' --在搭建复制时,避免勾选立即初始化和匿名复制 --==================================================================== --在分发服务器上,检查分发库中复制命令数量 USE distribution GO SELECT A.NAME, MaxRows = MAX(B.rows) FROM sys.tables A INNER JOIN sys.partitions B ON A.object_id = B.object_id WHERE A.name = 'MSrepl_transactions' OR A.name = 'MSrepl_commands' GROUP BY A.name --如果分发命令过多时,检查JOB: "分发清除: distribution" 的发生频率, --默认10分钟触发一次,如果一天清理一次, 上述两个表会积攒大量数据 --==================================================================== --清理无订阅的发布 --请慎重 --参考:http://blogs.msdn.com/b/sqlreplication/archive/2013/08/19/transactional-replication-immediate-sync.aspx SELECT * INTO MSdistribution_agents_bak FROM MSdistribution_agents WHERE subscriber_id<0 SELECT * INTO MSdistribution_history_bak FROM MSdistribution_history WHERE agent_id IN ( SELECT id FROM MSdistribution_agents WHERE subscriber_id<0 ) DELETE FROM MSdistribution_history WHERE agent_id IN ( SELECT id FROM MSdistribution_agents WHERE subscriber_id<0 ) DELETE FROM MSdistribution_agents WHERE subscriber_id<0 --==================================================================== --在发布上查看日志读取代理器状态, --使用复制监视器查看错误日志 --使用复制监视器插入令牌 --参考资料:http://blogs.msdn.com/b/apgcdsd/archive/2012/09/07/10347168.aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现