突然发现某数据库的日志已经1.5G了,然而原来使用的截断日志的语句在2008中已经失效,在网上搜寻了一些方法,验证下面方法是有效的:

首先检查目标数据库的恢复模式:

SELECT NAME, recovery_model_desc FROM sys.databases

如果是Full,则需要改为Simple:

ALTER DATABASE Test SET Recovery simple

然后收缩日志文件:

DBCC SHRINKFILE (N'test_log' , 10)

第一个参数是日志文件名,第二个参数是目标文件大小,以M为单位。

第一个参数名可以用以下方法确定:

USE DreamFree2010
SELECT NAME, size FROM sys.database_files

如此即可,日志文件已经收缩到目标的10M。

总结一下:


  1. 改Recovery mode为Simple
  2. 用DBCC SHRINKFILE收缩日志

参考:http://experiencing-sql-server-2008.blogspot.com/2008/02/sql-server-2008-truncating-transaction.html