sql server 2008数据库日志文件压缩截断方法

SQL Server 2008下日志清理方法
2011-05-03 17:12
 
 

每次看到暴涨的数据库日志就有些头大,于是乱搜一通找个办法把日志干掉,下次又头大,又搜半天,于是还是写篇blog,不用乱找了。

1.将数据库设置成 简单 模式

选择要收缩的数据库,点右键 属性->选项,选择 简单模式

sql server 2008数据库日志文件压缩截断方法_第1张图片

2.选择任务->收缩->文件

 sql server 2008数据库日志文件压缩截断方法_第2张图片

3.选择日志

 

sql server 2008数据库日志文件压缩截断方法_第3张图片

或者用如下语句

代码
USE   [ master ]
GO
ALTER   DATABASE  DNName  SET  RECOVERY SIMPLE  WITH  NO_WAIT
GO
ALTER   DATABASE  DNName  SET  RECOVERY SIMPLE
GO
USE  DNName 
GO
DBCC  SHRINKFILE (N ' LogFileName '  ,  0 ,TRUNCATEONLY)
GO
USE   [ master ]
GO
ALTER   DATABASE  DNName  SET  RECOVERY  FULL   WITH  NO_WAIT
GO
ALTER   DATABASE  DNName  SET  RECOVERY  FULL
GO





SQL Server 2000要清理日志使用的是dump语句,但是在SQL Server2008里,这个语句不管用了,如果日志文件很大,比如超过1G,就需要截断一下日志文件以加快sqlserver的运行速度,在SQL Server2008里,方法改为:

有数据库 xxdb 在 SQL Server 2008 下,日志文件已经超过1G。

以往使用BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断日志语句已经变为了 “BACKUP LOG 语句不指定 WITH COPY_ONLY”

使用语句 BACKUP LOG xxdb to disk='x:\work\1.bak'  成功将日志文件备份,并截断日志文件。这里x:代表你想要备份文件的盘符。

然后使用 DBCC SHRINKFILE (xxdb_log,10)  收缩日志文件到 10M

总结:

完整的收缩日志文件的 T-SQL 语句:

 

 

BACKUP LOG xxdb to disk='x:\work\1.bak'
DBCC SHRINKFILE (xxdb_log,10)
GO

--

BACKUP LOG <db_name> to disk=<'backupfilename'>
DBCC SHRINKFILE (<log_filename>,10)
GO

里面的x:\work是随意设置的。当然也可以收缩到比如5M或1M。

你可能感兴趣的:(sql,server,2008)