Tuesday, November 22, 2005

SQL Server 2000 数据库日志

SQL Server 2000 数据库对数据的事务会记录日志,并且能够根据日志回滚数据库操作,这个想必大家都知道。不过,如果日志变得很大,或者达到了限定的日志文件上限,就会对数据库产生较大的影响。

先来看看 SQL Server 2000 数据库日志文件的两种设定方式。


右下角可以设置日志文件的大小,上面一个选项是可以无限增大,后面一个选项是可以指定一个允许的最大值。数据库在运行过程中,这个日志文件会不断的增大,增大的速度视提供服务的压力而定。当这个文件达到预设的最大值时,任何数据库操作都会失败,会提示“无法写入日志”之类的报错信息;也可以允许这个文件无限增大,不过,当文件大到一定的程度,写入的效率会很低。笔者曾经遇到这个文件涨到 2.5 GB,在查明原因以前,整个系统莫名其妙效率降低很多,最后查到瓶颈在数据库。各种优化手段用上未果,最后发现日志是设置成无限增长的。把日志删除并把日志文件缩减后,问题解决。

因此,无论是让文件无限增长,还是设置文件最大值,都不可避免的遇到日志的删除和缩减问题。要缩减数据库日志,可以用查询分析工具 (SQL Query Analyzer) 运行如下命令:
DUMP TRANSACTION [db_name] WITH NO_LOG

然后如下图用“收缩数据库”(Shrink Database) 工具将删除后留下的空白空间收回。具体的:




然后选择“Files...”:


在“Database file”中选择日志对应的文件,一般是“[db_name]_Log”,“Shrink action”选择的第 4 项,将缩减的值设定为目前允许的最小值,然后点击“OK”即可。

3 comments:

Anonymous said...

非常感谢

Anonymous said...

lz在么,咨询一个问题
这个操作结束后,在系统日志中,出现
红色的记录,内容是18278,数据库日志已截断
是正常的么
在线等

Gregory said...

不好意思,因为没有遇到过类似的问题,所以不太清楚。