我不知道如何缩小数据库 ldf 文件的大小。
DBA 说我应该使用
backup log dbname with truncate_only
虽然看起来它在 SQL 查询分析器中正确执行,但 ldf 文件仍然超过 2 Gb。
**根据以下一些评论和一些答案进行澄清。***所讨论的特定数据库是我笔记本电脑上的数据库,我仅将其用于开发过程。日志文件增长到可能导致磁盘已满的程度。不涉及生产风险。我理解我提出的问题中的方法和我接受的答案在生产环境中是有风险的。*
答案1
如果您遇到这种情况,则极有可能出现以下情况之一:
- 您的数据库处于完全恢复模式,但它实际上应该处于简单模式
- 您的数据库处于完全恢复模式,您应该定期进行日志备份
- 您的数据库处于完全恢复模式,并且您的日志备份由于某种原因失败
- 你正在运行大量的事务,导致日志文件变得非常大
每个问题的答案如下:
如果 (1),则将数据库切换到简单模式
如果 (2),则安排定期日志备份
如果 (3),则修复计划的日志备份
如果 (4),则不要那样做 :) 相反,以较小的批次进行工作。
请注意,这些都不需要使用(已弃用的)“带有 truncate_only 的备份日志 dbname”
相反,一旦你这样做清除使用上述技术之一日志文件,然后使用以下命令收缩(现在为空的)日志:
DBCC SHRINKFILE ('log logical name', 2000)
始终指定一个合理的最终尺寸,否则它会缩小到接近 0,并且下次需要时,将不得不花时间来增长。
答案2
执行“使用 truncate_only 备份”后,你应该发出以下命令来收缩
dbcc SHRINKFILE (logfilename,shrink_tosize)
例如
dbcc SHRINKFILE (mydatabase_Log,512)
答案3
您上面编写的脚本将标记日志内容以供重复使用。按照该脚本执行:
USE <database>;
DBCC SHRINKFILE (<log logical file name>)
这会使它缩小。