如何 truncate/empty 巨大的 SQL 日志文件

How to truncate/empty huge SQL log files

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

通读我已经看到 t运行saction 日志备份没有完成,所以我怀疑这就是这些年来增长的原因。我正在设置 Always on replication,并希望在 Always-on 设置之前清空 t运行saction 日志文件。

我遵循了一些答案,例如: https://theitbros.com/truncate-sql-server-2012-transaction-logs/ https://www.sqlshack.com/sql-server-transaction-log-backup-truncate-and-shrink-operations/

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

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

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

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

删除 TRUNCATEONLY.

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