给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的联机帮助,里面有详细的说明。