【发布时间】:2010-09-07 14:40:58
【问题描述】:
在发送给同事之前,我需要清空 LDF 文件。如何强制 SQL Server 截断日志?
【问题讨论】:
标签: sql-server truncate logging
在发送给同事之前,我需要清空 LDF 文件。如何强制 SQL Server 截断日志?
【问题讨论】:
标签: sql-server truncate logging
在管理工作室:
Properties,然后选择Options。Tasks -> Shrink -> Files
或者,执行此操作的 SQL:
ALTER DATABASE mydatabase SET RECOVERY SIMPLE
DBCC SHRINKFILE (mydatabase_Log, 1)
【讨论】:
use mydatabase 才能执行 dbcc shrinkfile
如果我没记错的话……在查询分析器或同等工具中:
BACKUP LOG databasename WITH TRUNCATE_ONLY
DBCC SHRINKFILE ( databasename_Log, 1)
【讨论】:
WITH TRUNCATE_ONLY。
BACKUP LOG DatabaseNameHere TO DISK='NUL:'。
对于 SQL Server 2008,命令是:
ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)
ALTER DATABASE ExampleDB SET RECOVERY FULL
这将我的 14GB 日志文件减少到 1MB。
【讨论】:
对于 SQL 2008,您可以将日志备份到 nul 设备:
BACKUP LOG [databaseName]
TO DISK = 'nul:' WITH STATS = 10
然后使用DBCC SHRINKFILE 截断日志文件。
【讨论】:
使用 truncate_only 后跟 dbcc shrinkfile 命令的备份日志 logname
【讨论】:
因为我的答案被埋在了 cmets 中。对于 SQL Server 2012 及更高版本,您可以使用以下内容:
BACKUP LOG Database TO DISK='NUL:'
DBCC SHRINKFILE (Database_Log, 1)
【讨论】:
另一种选择是通过 Management Studio 分离数据库。然后只需删除日志文件,或重命名并稍后删除。
返回 Management Studio 再次附加数据库。在附加窗口中,从文件列表中删除日志文件。
数据库附加并创建一个新的空日志文件。确认无误后,即可删除重命名的日志文件。
您可能不应该将它用于生产数据库。
【讨论】: