给SQL Server日志文件减肥

软件世界

  如果对SQL Server数据库操作比较频繁,或者执行比较大的事务,你会发现日志文件会不停地膨胀,直至硬盘空间不足,提示“数据库 '…' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。”导致系统无法正常使用。

  但是在企业管理器中却没有相对简明的方法来删除日志。那如何给SQL Server 日志文件“减肥”呢,下面为大家提供两个简单的方法:

  方法一:设置日志不会增大

  1.使用企业管理器:右键点击数据库,选择“属性→选项→故障还原”,如果是SQL Server 2000,设为“简单”,如果是SQL Server 7,选中“Truncate log on checkpoint”就可以了。

  2.使用查询分析器:EXEC sp_dboption '数据库名', 'trunc. log on chkpt.', 'TRUE'

  但是我不推荐这样做,因为这是以截断日志为代价的。这也就意味着一旦出现误操作,将无法利用日志来恢复。

  方法二:清空日志

  在查询分析器中执行:

  清空日志

  DUMP TRANSACTION 数据库名 WITH NO_LOG

  截断事务日志

  BACKUP LOG 数据库名 WITH NO_LOG

  当做了这些之后,你会发现日志文件并没有减小。这是因为上面的操作只是回收了逻辑空间的占用,没有回收日志记录占用的磁盘空间,你可以继续进行收缩操作:

  1.使用企业管理器:右键点击数据库,选择“所有任务→收缩数据库→收缩文件” ,选择日志文件,在收缩方式里选择收缩后的文件大小,按确定就可以了。

  2.使用查询分析器:

  收缩数据库

  DBCC SHRINKDATABASE(数据库名)

  收缩指定数据文件

  DBCC SHRINKFILE(1)

  1是文件号,可以通过这个语句查询到:select * from sysfiles。

  小结

  其实还可以设置其他选项来控制日志文件的大小,比如自动收缩,最大数据文件大小等等,但这样可能会影响SQL Server的性能,所以就不介绍了。要想得到上面那些命令更详细的信息,可以查看SQL Server的联机帮助,里面有详细的说明。