日志简介


SQL Server中的事务日志无疑是SQL Server中最重要的部分之一。因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback)。从而还部分确保了事务的ACID属性.在SQL Server崩溃时,DBA还可以通过事务日志将数据恢复到指定的时间点。当SQL Server运转良好时,多了解一些事务日志的原理和概念显得并不是那么重要。但是,一旦SQL SERVER发生崩溃时,了解事务日志的原理和概念对于快速做出正确的决策来恢复数据显得尤为重要.本系列文章将会从事务日志的概念,原理,SQL Server如何使用日志来确保持久性属性等方面来谈SQL Server的事务日志.


随着数据库的不断增长,数据库日志(ldf文件)不断增长,甚至磁盘空间都已经存满,所以必要时需要对日志文件进行收缩。


事务日志截断

若要避免数据库的事务日志被填满,例行备份至关重要。在简单恢复模式下,备份了数据库后会自动截断日志,而在完整恢复模式下,只有备份了事务日志后方才截断日志。但是,截断过程有时也可能发生延迟。有关识别和应对各种延迟因素的信息,请参阅可能延迟日志截断的因素。

--BACKUP log testDB with no_log

USE testDB; 
GO

-- 截断日志,改变数据库备份模式为简单.

ALTER DATABASE testDB SET RECOVERY SIMPLE;

GO

-- 收缩日志,调整大小为1M,testDB_Log为日志逻辑名称.

DBCC SHRINKFILE (testDB_Log, 1); 
GO

-- 回复备份模式为完整.

ALTER DATABASE testDB SET RECOVERY FULL; 
GO