【问题记录】执行sql, SSMS报 The transaction log for database

问题描述

执行sql, SSMS报

The transaction log for database 'dbname' is full due to 'LOG_BACKUP' and the holdup lsn is (2128:712:1).


原因分析:

在 完整恢复模式 下,SQL Server 不会自动截断(释放)事务日志空间,除非你执行了 事务日志备份(LOG BACKUP)。如果长时间没有做日志备份,日志文件就会不断增长,直到磁盘空间耗尽或达到最大大小限制,从而导致此错误。

"due to 'LOG_BACKUP'" 明确说明:日志无法被截断,是因为尚未进行日志备份。


解决方案:

方法 1:立即执行事务日志备份(推荐)

如果你需要保留时间点恢复能力(即使用完整恢复模式),请立即备份事务日志:

BACKUP LOG dbName TO DISK = 'D:\Backups\dbname_log_20260129.trn';

⚠️ 确保目标路径有足够空间,并且 SQL Server 服务账户有写入权限。

执行完日志备份后,SQL Server 会自动标记可重用的日志空间,你的后续操作就能继续了。

方法 2:临时切换为简单恢复模式(仅限非生产/不要求时间点恢复的场景)

如果你 不需要 事务日志备份和时间点恢复(例如开发环境),可以临时切换到 简单恢复模式,让 SQL Server 自动截断日志:

-- 1. 切换恢复模式

ALTER DATABASE sarahdb SET RECOVERY SIMPLE;

-- 2. 收缩日志文件(可选)

DBCC SHRINKFILE (sarahdb_log, 512); -- 单位 MB,根据需要调整

-- 3. (可选)再切回完整模式(如果之后需要)

-- ALTER DATABASE sarahdb SET RECOVERY FULL;

-- 注意:切回 FULL 后必须立即做一次完整备份,否则仍处于"伪简单模式"

我是开发环境测试用, 选的方法二。记录end

相关推荐
小白男神11 小时前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶11 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G12 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备12 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远12 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
漂着的圆木13 小时前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量
kybs199113 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_9622186114 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客14 小时前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
张洛闻Eren14 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github