我需要先清空LDF文件,然后再发送给同事。如何强制SQL Server截断日志?
如果我还记得...在查询分析器或类似工具中:
BACKUP LOG databasename WITH TRUNCATE_ONLY
DBCC SHRINKFILE ( databasename_Log, 1)
在管理工作室中:
Properties
,然后选择Options
。Tasks
-> Shrink
-> Files
或者,执行此操作的SQL:
ALTER DATABASE mydatabase SET RECOVERY SIMPLE
DBCC SHRINKFILE (mydatabase_Log, 1)
对于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收缩文件命令
由于我的答案被埋在评论中。对于SQL Server 2012及更高版本,可以使用以下命令:
BACKUP LOG Database TO DISK='NUL:'
DBCC SHRINKFILE (Database_Log, 1)
另一种选择是通过Management Studio分离数据库。然后,只需删除日志文件,或重命名该日志文件,然后再删除。
返回Management Studio,再次附加数据库。在附加窗口中,从文件列表中删除日志文件。
数据库附加并创建一个新的空日志文件。检查一切正常之后,您可以删除重命名的日志文件。
您可能不应将其用于生产数据库。