dump transaction @db_name
with truncate_only
END
第三讲
数据库与事务日志
一、创建用户数据库
Create Database 数据库名
On 设备_1=Size_1,//单位:M
设备_2=Size_2,
……
log on 日志设备=Log_Size
[With Override]//在同一设备上创建数据库和事务日志时使用该选项
[For Load] //禁止用户访问直到数据库的装入或恢复操作完成为止
举例:
Create Database test_db
On data_dev=100,//单位:M
Index_dev=50
Log on log_dev=30
说明:
(1)将日志放在单独的设备上,有利于数据库性能的提高;
(2)图示:
Data_dev Index_dev log_dev
(3)如果将数据库和日志放在同一设备上,就不能实现增量备份;
(4)通常将System和Default段缩减范围到一个设备上,如删除设备Index_dev上的System段和Default段,创建新的段,用来存放专门的数据库对象。
二、更改数据库
1.改变数据库属主
通常用户数据库有系统管理员创建,它的默认属主是dbo。系统过程sp_changeddbowner可改变数据库的属主关系,它必须由数据库管理员在要改变属主关系的数据库中执行。语法如下:
sp_changeddbowner login_name[,True]
其中参数True用于将权限一半传递给新属主。
2.扩展数据库
(1)扩展数据库空间
alter database 数据库名
on 设备名=扩展空间 //单位:M
如果扩展的设备对于数据库是新的,System和Default段会自动扩展到该设备上。
(2)扩展事务日志到新的设备上
sp_logdevice 数据库名,设备名
举例:将数据库另外扩充5M,用于存储日志
alter database my_db
on my_dev=5
go
sp_logdevice my_db,my_dev
go
3.删除数据库
drop database 数据库名
删除设备前必须删除其上的所有数据库,删除设备的命令是:sp_dropdevice
三、事务日志
日志文件是用来记录数据库每一次修改活动的文件。
SQL Server中的每一个数据库都有自己的日志文件,即系统表syslogs,也称为事务日志。事务日志是撤消事务和出现故障时恢复事务的依据。
在某些情况下,事务日志比数据本身更为重要。
什么是事务?
数据库的修改是以事务为单位进行的。一个事务就是一个操作序列,这些操作要么全做,要么全不做,它是一个不可分割的工作单位。任何一个事务具备如下特征。
(1)执行的原子性(Atomic);
(2)保持数据的一致性(Consistency);
(3)彼此的隔离性(Isolation);
(4)作用的持久性(Durability)。
上述事务的四个特征被称为事务的ACID准则。
事务在运行过程中,SQL Server把事务开始、事务结束以及对数据库的插入、删除和更新等每一个操作作为一个日志记录存放到事务日志中。事务中的更新操作首先在数据库缓冲区(
内存)中进行,缓冲区分别有用来记录操作活动的数据页(data page)和日志页(log page)。当运行到commit tran时,日志页首先从缓冲区写到磁盘上,而后数据页从缓冲区写到磁盘上,即遵循“先与日志(write_ahead log)”的原则,这样保证出现故障的情况下,通过日志能够得到最大限度的恢复。恢复必须撤消发生故障时还未提交的事务,已完成的事务若仍有未从缓冲区写到数据库设备中,还要重新运行该事务。
附:创建与装载数据库实例