首页 > 解决方案 > 如何截断/清空巨大的 SQL 日志文件

问题描述

我有一些大约 500mb 的数据库和 50+gb 的日志文件。

通读我已经看到事务日志备份没有完成,所以我怀疑这就是多年来这种增长的原因。我正在设置 Always on 复制,并希望在 Always On 设置之前清空事务日志文件。

我遵循了一些答案,例如: https://theitbros.com/truncate-sql-server-2012-transaction-logs/ https://www.sqlshack.com/sql-server-transaction-log-backup-truncate-和收缩操作/

但我无法将文件缩小到任何适中的大小。有没有办法清空日志文件并将它们恢复到 +- 100mb?

我已经将数据库设置为简单的恢复模式,运行了下面的 TSQL,但它仍然没有发布。打开报告时,我看到即使设置为简单恢复模式,也没有空间可以释放。我同意丢失时间点恢复,因为一旦调整日志大小,我会将所有内容恢复为完整状态并进行完整备份。

USE [AdventureWorks2016CTP3]
GO
DBCC SHRINKFILE (N'AdventureWorks2016CTP3_Log' , 0, TRUNCATEONLY)
GO

为了安全起见,我在做任何事情之前已经进行了完整备份。任何提示/指导表示赞赏。

标签: tsqlsql-server-2019

解决方案


删除TRUNCATEONLY.

USE [AdventureWorks2016CTP3]
GO
DBCC SHRINKFILE (N'AdventureWorks2016CTP3_Log' , 100)
GO

推荐阅读