如何缩小SQL Server日志文件的大小

我无法弄清楚如何缩小数据库ldf文件的大小。

DBA说我应该使用backup log dbname with truncate_only

虽然这看起来像在SQL查询分析器中正确执行,但ldf文件仍然超过2 GB。

**根据下面的一些注释和一些答案进行说明***所讨论的特定数据库是在我的笔记本电脑上的一个数据库,我仅将它用于开发过程。 日志文件正在增长到看起来导致完整磁盘的一个点。 不涉及生产风险。 我明白,我所问的问题和我接受的答案在生产环境中是有风险的。

哦,恐怖! 请停止告诉人们他们应该缩小他们的日志文件!

如果你陷入这种情况,那么以下情况之一是极有可能的:

  1. 你的数据库处于完全恢复模式,它应该是真正的简单模式
  2. 您的数据库处于完全恢复模式,您应该定期进行日志备份
  3. 您的数据库处于完全恢复模式,由于某种原因您的日志备份失败
  4. 你正在运行巨大的交易,日志文件大规模的吹

每一个的答案如下:

如果(1),则将数据库切换到简单模式
如果(2),则安排定期的日志备份
如果(3),则修复您的计划日志备份
如果(4),那么就不要这样做:)而是,做小批量的工作。

请注意,这些都不需要使用(不赞成使用)“truncate_only备份日志数据库名”

相反,一旦您使用上述技术之一清除日志文件,然后缩小(现在是空的)日志:

 DBCC SHRINKFILE ('log logical name', 2000) 

总是指定一个合理的最终大小,否则它会缩小到接近0,下一次需要时,将不得不花费时间来增长。

在执行“truncate_only备份”之后,您应该执行以下命令来收缩

 dbcc SHRINKFILE (logfilename,shrink_tosize) 

例如

 dbcc SHRINKFILE (mydatabase_Log,512) 

您上面编写的脚本将标记日志内容以供重用。 遵循该脚本:

 USE <database>; DBCC SHRINKFILE (<log logical file name>) 

这会缩小你的。