日志文件是用来记录数据库每一次修改活动的文件。SQL Server中的每一个数据库都有自己的日志文件,即系统表syslogs,也称为事务日志。事务日志是撤消事务和出现故障时恢复事务的依据。
在某些情况下,事务日志比数据本身更为重要。
什么是事务?
数据库的修改是以事务为单位进行的。一个事务就是一个操作序列,这些操作要么全做,要么全不做,它是一个不可分割的工作单位。任何一个事务具备如下特征。
(1)执行的原子性(Atomic);
(2)保持数据的一致性(Consistency);
(3)彼此的隔离性(Isolation);
(4)作用的持久性(Durability)。
上述事务的四个特征被称为事务的ACID准则。
事务在运行过程中,SQL Server把事务开始、事务结束以及对数据库的插入、删除和更新等每一个操作作为一个日志记录存放到事务日志中。事务中的更新操作首先在数据库缓冲区(内存)中进行,缓冲区分别有用来记录操作活动的数据页(data page)和日志页(log page)。当运行到commit tran时,日志页首先从缓冲区写到磁盘上,而后数据页从缓冲区写到磁盘上,即遵循“先与日志(write_ahead log)”的原则,这样保证出现故障的情况下,通过日志能够得到最大限度的恢复。恢复必须撤消发生故障时还未提交的事务,已完成的事务若仍有未从缓冲区写到数据库设备中,还要重新运行该事务。
附:创建与装载数据库实例
use master
decl are @vedvno int
select @vdevno=max(convert(tinyint,substring(convert(binary(4),d.low),v.low,1))) 1
from master.dbo.sysdevices d,master.dbo.spt_values v
where v.type=’E’and v.number=3
declare @v_str char(2)
select @v_str=convert(char(2),@vdevno)
print @v_str
disk init
name=”YDDATA”,
physname=”D: yb_Data\YDDATA.dat”,
vdevno=@vdevno 1,
size=153600
disk init
name=”YDINDEX”,
physname=”D: yb_Data\YDINDEX.dat”,
vdevno=@vdevno 2,
size=102400
disk init
name=”YDLOG”,
physname=”D: yb_Data\YDLOG.dat”,
vdevno=@vdevno 3,
size=76800
create database YDMISDB
on YDDATA=300,YDINDEX=200
log on YDLOG=150
use YDMISDB
execute sp_addsegment indexdev,YTMISDB,YTINDEX
execute sp_dropsegment “default”,YTMISDB,YTINDEX
execute sp_dropsegment system,YTMISDB,YTINDEX
use master
load database YDMISDB from ‘d:\yd_dump\ydmis_backup.dmp’
online database YDMISDB