SQL Server清理 .ldf数据库日志文件

方法一:收缩数据库日志 在SSMS中选择数据库,右键任务→压缩→文件,选择日志,设置目标大小,然后单击确定。

方法二:更改数据库恢复模式 右键单击数据库,单击“属性”,在“选项”页面上将“恢复模式”更改为“简单”,然后单击“确定”。

方法三:删除并重新生成日志文件 断开数据库连接,删除.ldf 文件,附加数据库,忽略“.ldf not found”提示。

查看数据库存储路径 右键单击数据库并选择“属性”>“文件”以显示“路径”列。

请先备份您的数据库,然后再继续。

数据库日志已满,如何处理?

说实话,刚拿到系统的时候,数据库日志满了的时候,我也曾头疼过一阵子。
记得有一次,半夜被运维打电话,说线上数据库记录爆炸了,整个服务器要宕机了。
当时我就赶紧把日志清理了。
即使系统恢复了,但后续的数据验证丢失了一些记录,这让我很奇怪。

清除日志是一个非常难的方法,只需使用垃圾事务库名加上no_log即可。
我有一个高手教我,执行这个命令后,日志会立即被清除,但正如你所说,所有未完成的事务都会丢失。
必须权衡这种风险。
有一次我差点按错按钮,但幸运的是我仔细检查了一遍。
我记得手术结束后,我迅速后退,那天晚上我很平静。

常见的是使用备份日志数据库名withno_log来截断日志,至少感觉比直接清理安全一点。
执行该命令后,日志文件将被截断为备份点的大小以释放空间。
我经常用它来处理紧急情况。
最重要的是,并非所有记录都应该保存到最后一刻。

缩小日志文件的过程也很有趣。
您必须首先使用 dbccshrinkfile 命令查找日志文件的逻辑名称,该命令需要 selectfromsysfiles 等命令。
我遇到过日志缩减过程中日志变得碎片化、延迟备份并最终不得不重做的情况。
የውሂብ ፋይሎችን በመቀነስ ረገድም ተመሳሳይ ነው።不要强烈减少,否则数据库会变得非常碎片,查询性能会受到影响。

当我不再控制注册表或想要完全重置注册表时,通常会使用这种分离和重新附加的方法。
我最终不得不这样做,因为这是一个老项目,日志文件和我记得的竹子一样长。
释放execsp_detach_db后,删除混乱的日志文件,然后重新附加execsp_attach_single_file_db,整个日志文件将立即完成。
但,在继续之前,您应该进行完整备份。
我亲眼见过有人忘记备份,重新连接后所有数据都消失了。
预防措施中,我很少使用自动减速。
我尝试过一次自动降级,但数据库经常抖动,查询卡住。
最后它关门了。
限制木材的生长是有好处的。
最大日志文件大小由变量数据库数据库名称modifyfile 设置。
这有效地防止了日志变得太长。
我已经在几个生产库中完成了此操作,并且从未遇到过完整日志问题。

坦率地说,解决完整数据库日志记录的问题是一个权衡利弊的问题。
在紧急情况下,纠正措施可以挽救紧急情况,但救不了穷人。
毕竟,如果信息丢失,没有人会感到不舒服。
我目前的做法是牺牲一些空间,尽量不触发紧急流程。
定期监控日志并提前做好备份。
这是一个长期的解决方案。