当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 剖析SQL Server 事务日志的收缩和截断

MSSQL
精通数据库系列之入门:基础篇1
剖析SQL Server 2005查询通知之基础篇
用sp_lock诊断SQL Sever的性能问题
测试SQL Server业务规则链接方法
解析SQL Server数据应用在不同的数据库中
如何使用SQL Server数据库中查询累计值
逐行扫描 为你讲解几个基本SQLPLUS命令
教你一招:MSSQL数据库索引的应用
确定几个SQL Server栏中的最大值
SQL Server 2005分析服务 统一整合视图
如何使用SQL Server嵌套子查询
用TableDiff产生SQL Server同步脚本
小型商业应用选SQL Server还是Access
用SQL Server Having计算列和平均值
SQL Server 2005基于消息的应用程序介绍
在SQL Server实例之间传输登录和密码
SQL Server 2005深层工具和运行时间集
SQL Server数据库增强版备份体验
使用SQL Server 2000日志转移实现高可用性
浅谈Linq To Sql集成数据库语言的优劣

MSSQL 中的 剖析SQL Server 事务日志的收缩和截断


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 116 ::
收藏到网摘: n/a

SQL Server中事务日志的作用:持续记录数据库所有的事务和这些事务对数据库所做的修改;一旦数据库出现灾难事件,就需要事务日志来进行近期数据的恢复操作。但是,在此条件下受益的同时也要付出相应的代价:在活动数据库中,事务日志会消耗大量的存储空间,假如你不做任何的干预,事务逻辑日志将会一直增长,直到塞满存储这些日志文件的所有可用空间。下面我们来详细介绍SQL Server提供的两个用来平衡事务日志对空间巨大需求的操作:收缩事务日志和截断事务日志。

◆日志收缩

截断日志虽然确实从日志文件中清除了事务,但它并不会真正的减小物理日志文件的大小。SQL Server希望事务日志最终会扩展到其截断前的大小,所以截断不会释放已经分配给日志的硬盘空间。如果你的日志在某一时刻人为地扩展到某个大小,却再也无法恢复到这个大小的话可就麻烦大了。

在这种情况下,要释放硬盘物理空间做其他用途,就要手动进行事务日志文件收缩操作。你可以使用下面的T-SQL命令实现日志文件的收缩:

DBCC SHRINKFILE(,)
 
上面命令中的desired_shrink_size指的是你想要回收的硬盘空间大小(以MB为单位)。你可以在执行完事务日志截断操作之后立即回收大部分的磁盘空间。

◆日志截断

截断事务日志操作就是清除事务日志文件中的非活动记录。在一般的情况下,SQL Server能够自动执行截断操作,不需要人工干预管理。截断的频率取决于数据库的使用程度。你每进行一次完整恢复模式或大容量日志恢复模式的数据库备份,SQL Server就会截断一次事务日志。如果是在简单恢复模式下(不能还原事务日志),SQL Server会在每个检查点之后截断事务日志。

你也可以通过间接的方式手动驱使SQL Server执行事务日志截断操作,需要运行备份操作,不过你可以给SQL Server下指示,表明你只想执行事务日志的备份操作,不做执行其他任何操作。通过以下的T-SQL命令仍然可以达到上述效果:

BACKUP LOG WITH TRUNCATE_ONLY;