暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

SQLServer 2012 主节点无法截断事务日志

原创 游兵老卒 2023-10-10
338

问题

sqlserver 2012 日志文件比较大,且无法进行收缩,报错如下

该日志未截断,因为其开始处的记录是挂起的复制操作或变更数据捕获。请确保日志读取器代理或捕获作业正在运行,或使用 sp_repldone 将事务标记为分布式或捕获。

分析

分析过程解决参考了大神博客

使用如下命令信息查询,发现日志文件是replication状态。

SELECT log_reuse_wait_desc,* FROM sys.databases

查看作业发现有CDC,有关CDC参考了大神博客

经过查看此库开启了CDC任务,且作业里面停止了CDC作业。

select is_cdc_enabled from sys.databases where name='test'

处理

先关闭了,
EXEC sys.sp_cdc_disable_table
@source_schema = N’dbo’,
@source_name = ‘test’,
@capture_instance =‘all’

还是不能收缩,我再次开启
use test
exec sys.sp_cdc_enable_db
再次进行备份,和收缩成功。再次关闭CDC。

备份及收缩命令

备份日志文件到nul,本在本地存放。如果SHRINKFILE 不好用,就用smss里面的收缩选项。

USE [TEST]

BACKUP LOG [TEST] TO  DISK = N'NUL' 
GO

USE [TEST]
GO
DBCC SHRINKFILE (N'TEST_Log' , 1024)
GO

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论