在发给同事之前,我需要清空一个LDF文件。如何强制SQL Server截断日志?


当前回答

使用truncate_only和DBCC shrinkfile命令备份日志logname

其他回答

使用truncate_only和DBCC shrinkfile命令备份日志logname

对于SQL Server 2008,命令为:

ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)
ALTER DATABASE ExampleDB SET RECOVERY FULL

这将我的14GB日志文件减少到1MB。

如果我没记错的话……在查询分析器或等效程序中:

BACKUP LOG  databasename  WITH TRUNCATE_ONLY

DBCC SHRINKFILE (  databasename_Log, 1)

因为我的答案就藏在评论里。对于SQL Server 2012及以上版本,您可以使用以下命令:

BACKUP LOG Database TO DISK='NUL:'
DBCC SHRINKFILE (Database_Log, 1)

另一种选择是通过Management Studio分离数据库。然后简单地删除日志文件,或者重命名它并稍后删除。

回到Management Studio再次附加数据库。在附加窗口中从文件列表中删除日志文件。

DB附加并创建一个新的空日志文件。检查一切正常后,可以删除重命名的日志文件。

您可能不应该将此用于生产数据库。