SQL 2008的日志文件占用23G硬盘空间,但是事务日志已经被截断,实际日志内容很少,不到1G。我想释放日志文件占用的额外空间。
然而,无论如何收缩日志文件,空间就是无法释放,并且总是出现错误:
Cannot shrink log file 2 (CNBlogsText_log) because of minimum log space required.
我之前也解决过类似的问题,也写过一篇博客——SQL server 2008事务日志清理,当时最终采用的解决方案是:
将恢复模式从完整更改为简单。
收缩日志文件。
将恢复模式从简单更改为完整。
我一直以为这是终极方法,但这次遇到的问题我没能结束。
经过不懈的努力,我终于找到了真正的终极方法:
1.分离数据库(分离前必须阻止对此数据库的所有写入)。
2.删除或重命名日志文件
3.附加数据库,会提示找不到日志文件。
4.删除找不到的日志文件,然后单击“确定”将其附加。SQL Server将自动在数据文件所在的文件夹中创建一个新的日志文件来完成附件。
5.如果日志文件需要存储在另一个路径中,请通过分离/附加移动日志文件。
分离数据库
将日志文件移动到新位置
附加数据库,修改日志文件的路径并完成附加。
这种终极方法的缺点是在操作过程中无法正常访问被操作的数据库。