为了安全起见,SQL Server 2008 及以后版本的 SQL Server 已经废弃了日志“暴力”清除命令:
BACKUP LOG WITH TRUNCATE_ONLY
但在SQL Server 2008 及以后版本中允许备份日志后收缩日志,命令如下:
USE AdventureWorks BACKUP LOG AdventureWorks TO DISK='F:\MSSQL_Backup\AdventureWorks.trn' DBCC SHRINKFILE (AdventureWorks_Log, 1024)
即,首先使用 BACKUP LOG 命令备份日志,然后使用 DBCC SHRINKFILE 命令收缩文件,其中的文件名(AdventureWorks_Log)为日志文件的逻辑文件名,后面的数字为保留的日志文件大小,单位为 MB。
另外,使用此方法仍然可以做到“暴力”清除的效果,就是在备份日志时,将备份文件名修改为 ‘nul’,即:
BACKUP LOG AdventureWorks TO DISK='nul'
此时,将不会创建日志备份文件,但仍然可以收缩日志。
但是此方法将丢失数据库日志,对数据库是危险的,除非你的数据库不重要,否则,不要用!
此外,常规的办法是修改数据库的恢复模式为简单模式,然后收缩日志,再将恢复模式改为完整模式,命令如下:
---------------------------------数据库日志文件收缩-------------- USE [master] --简单模式 ALTER DATABASE DBName SET RECOVERY SIMPLE WITH NO_WAIT GO USE DBName GO --执行收缩命令,收缩到5MB DBCC SHRINKFILE (N'DBName_log' , 5, TRUNCATEONLY) GO USE [master] GO --还原为完全模式 ALTER DATABASE MemberDB SET RECOVERY FULL WITH NO_WAIT GO
但是在简单模式下,数据库的安全性降低,不建议使用。