当前位置: 首页
科技数码
SQL Server事务日志无法收缩?4步排查与解决实战案例

SQL Server事务日志无法收缩?4步排查与解决实战案例

热心网友 时间:2026-02-04
转载

数据库日志管理是DBA日常工作中相当重要的一环。与其等到日志文件撑爆磁盘再手忙脚乱地处理,不如提前建立起规范的监控和维护流程,从源头上把问题解决掉。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

一大早,开发团队就反映监控系统告警,数据库db1的日志文件已经把磁盘占满了。这已经是个老生常谈的问题,通常的解决办法就是执行一波日志收缩操作。但这一次,常规手段居然失灵了!

1. 问题重现:常规操作不灵了

我们通常会执行下面的命令来收缩事务日志:

ALTER DATABASE [db1] SET RECOVERY SIMPLE;
DBCC SHRINKFILE (N‘db1_log‘, 1024);
ALTER DATABASE [db1] SET RECOVERY FULL;

可这次执行之后,日志文件的大小纹丝不动。作为一名经验丰富的DBA,我立刻意识到事情恐怕没那么简单。

2. 排查过程:揪出“罪魁祸首”

面对这种情况,我首先检查了日志文件无法被重用的原因:

SELECT name, log_reuse_wait_desc FROM sys.databases WHERE name = ’db1’;

查询结果显示,log_reuse_wait_desc字段的值是“REPLICATION”。这就有点奇怪了,因为我清楚这个数据库并没有配置任何复制功能。查阅资料后才发现,这很可能是之前残留的、未清理干净的复制元数据在作祟。

我接着确认一下当前活动事务的情况:

DBCC OPENTRAN(’db1’);

果然,存在活动事务阻塞了日志的截断。

3. 解决方案:多管齐下

针对发现的这些问题,我采取了以下组合措施:

(1) 清理复制元数据

EXEC sp_removedbreplication ’db1’;

这个命令会清除数据库里的复制信息。但请注意:如果数据库确实需要用到复制功能,就不能使用这个方法,否则会破坏现有复制架构。

(2) 处理活动事务

通过 DBCC OPENTRAN 找到活动事务后,我与开发团队进行了确认,终结了那些长时间运行且不再必要的事务。

如果是分布式事务或者涉及了数据库链接的情况,很可能导致事务一直处于需要手动回滚的状态,并且基本不会自动完成(别问我是怎么知道的,都是教训)。这时候就需要考虑在业务低峰期或维护窗口重启数据库实例了。

(3) 日志备份后截断

对于采用完整恢复模式的数据库,进行日志备份才是截断日志的正确姿势:

-- 执行日志备份
BACKUP LOG [db1] TO DISK = N’D:\Backup\db1_Log.bak’;
-- 然后再收缩
DBCC SHRINKFILE (N’db1_log‘, 1024);

如果确定不需要保留日志备份,也可以临时切换到简单恢复模式来截断日志:

-- 将数据库恢复模式改为simple
ALTER DATABASE [db1] SET RECOVERY SIMPLE;
-- 截断并收缩日志文件
DBCC SHRINKFILE (N’db1_log‘, 1024);
-- 恢复数据库的完整恢复模式
ALTER DATABASE [db1] SET RECOVERY FULL;

用这种方式截断日志后,建议紧接着做一次完整的数据库备份。

之后可以查看一下各个文件的大小情况:

-- 查看所有数据文件和日志文件的大小及路径
SELECT DB_NAME(database_id) AS 数据库名,
       name AS 逻辑文件名,
       type_desc,
       physical_name,
       size * 8.0 / 1024 AS 文件大小_MB,
       CASE WHEN type_desc = ’ROWS‘ THEN FILEPROPERTY(name, ’SpaceUsed‘) * 8.0 / 1024
            ELSE NULL END AS 已用空间_MB,
       CASE WHEN type_desc = ’ROWS‘ THEN (size * 8.0 / 1024) - (FILEPROPERTY(name, ’SpaceUsed‘) * 8.0 / 1024)
            ELSE NULL END AS 剩余空间_MB
FROM sys.master_files;

(4) 预防措施:建立长效机制

问题解决后,我制定了以下预防措施,避免问题卷土重来:建立定期的日志备份计划,避免日志无限增长;监控长时间运行的事务,设置告警机制;定期检查日志文件大小,防患于未然。

4. 总结

通过这次排查,我总结出日志文件无法收缩的几种常见原因及应对策略:活动事务阻塞:使用 DBCC OPENTRAN 检查并处理。复制问题:清理复制元数据或重新配置复制。缺少日志备份:在完整恢复模式下,必须定期备份日志。其他因素:如数据库镜像、快照创建等,需针对性处理。

数据库日志管理是DBA日常工作中相当重要的一环。与其等到日志文件撑爆磁盘再手忙脚乱地处理,不如提前建立起规范的监控和维护流程,从源头上把问题解决掉。

希望这次的实战经验对大家有所帮助!如果你有更好的解决办法或独特见解,欢迎与我交流探讨。

来源:https://www.51cto.com/article/834027.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
OPPO Pad 5 Pro 平板现身官网,消息称新机将搭载第五代骁龙 8 至尊版处理器

OPPO Pad 5 Pro 平板现身官网,消息称新机将搭载第五代骁龙 8 至尊版处理器

OPPO Pad 5 Pro 平板官方页面曝光,或将首发骁龙 8 Gen 3 至尊版芯片 安卓平板电脑市场即将迎来一位实力强劲的新成员。近日,OPPO 在其官方网站的预约页面中,低调展示了即将发布的 OPPO Pad 5 Pro。从释放的轮廓海报来看,这款新平板明确支持悬浮磁吸键盘和智能手写笔,直接

时间:2026-04-03 08:09
消息称某厂折叠屏新机排期暂定 7 月:镜头模组、物料大面积国产化,预计为小米 MIX Fold 5

消息称某厂折叠屏新机排期暂定 7 月:镜头模组、物料大面积国产化,预计为小米 MIX Fold 5

消息称国产折叠屏旗舰定档7月发布:核心物料与镜头模组全面国产化,疑似小米MIX Fold 5 近期,数码科技领域再度传来重磅动态。据知名爆料博主@智慧皮卡丘在微博平台透露,国内某头部厂商的下一代折叠屏旗舰手机,已在核心物料、影像镜头模组乃至系统软件层面实现了大规模国产化与深度自研。在当前的产业链发展

时间:2026-04-03 08:07
消息称高通骁龙 8 Elite Gen6 Pro 处理器将支持 LPDDR6 内存

消息称高通骁龙 8 Elite Gen6 Pro 处理器将支持 LPDDR6 内存

下一代安卓旗舰芯片革命:骁龙 8 Elite Gen6 Pro 正式官宣支持 LPDDR6 内存 安卓阵营即将迎来新一轮的性能飞跃。根据最新的供应链与行业爆料综合确认,高通下一代旗舰移动平台——骁龙 8 Elite Gen6 Pro,将率先实现对下一代 LPDDR6 内存标准的支持,这无疑将为来年旗

时间:2026-04-03 08:00
消息称一加 Ace6 至尊版搭载 8500mAh 电池、165Hz 屏、天玑 9500 芯片

消息称一加 Ace6 至尊版搭载 8500mAh 电池、165Hz 屏、天玑 9500 芯片

一加 Ace6 至尊版最新爆料:天玑9500与8500mAh超大电池引领性能革新 近期,科技数码领域再度迎来重大爆料。根据知名数码博主 @熊猫很禿然 的最新信息,一加即将推出的 Ace6 至尊版有望在硬件配置上实现全新突破。据悉,该机型可能搭载行业领先的 8500mAh 超大容量电池,配备一块支持

时间:2026-04-03 07:59
6.99美元捡漏64GB内存条!因店员不识货“白送”

6.99美元捡漏64GB内存条!因店员不识货“白送”

仅花7美元“捡漏”高端内存?一次令人啼笑皆非的零售乌龙 近日,海外科技社区热议一则真实趣闻:一位顾客在当地清算商店以极低价格“捡漏”高端硬件。据科技媒体Wccftech报道,这位幸运用户仅支付6 99美元,便购得一套64GB容量的英睿达(Crucial)DDR5-5600 SODIMM笔记本内存套装

时间:2026-04-03 07:57
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程