【实验目的】
1、在掌握事务的概念基础上,理解事务特性;
2、掌握数据库恢复原理;
3、熟悉SQL SERVER 的基本恢复技术。
【实验性质】
验证性实验
【实验步骤】
1、设计一个事务的运行过程,观察事务运行期间的封锁及其含义。
(1)创建数据库qixin,创建表s。
create database qixin
use qixincreate table s
(
sno char(2),
sname varchar(6) not null,
status int,
city varchar(6),
primary key (sno)
)
insert into s values('S1','竟仪',20,'天津')
insert into s values('S2','盛锡',10,'北京')
insert into s values('S3','东方红',30,'北京')
insert into s values('S4','丰泰盛',20,'天津')
insert into s values('S5','为民',30,'上海')
(2)在“查询分析器”的一个连接窗口(连接1)中,运行事务,见下图。
(3)在“查询分析器”新建一个连接窗口(“文件”->“连接”,连接2),执行操作,见下图。
(4)在连接1窗口执行commit,观察连接2窗口,见下图。
分析原因并解释。
提示:
可以考虑s表的加锁情况。观察s表的加锁情况,根据锁的相容矩阵可以得出结论。
观察s表的加锁方法有:
(1)sp_lock
通过在master数据库,执行系统存储过程sp_lock,观察s表的加锁情况:
USE master
EXEC sp_lock
(2)企业管理器
通过“企业管理器”-> “管理” -> “当前活动”-> “锁/进程ID”,见下图。
详细内容参阅MS SQL SERVER“联机丛书”中“访问和更改关系数据”->“事务”、“访问和更改关系数据”-> “锁定”。
2、阅读MS SQL SERVER“联机丛书”相关内容,掌握SQL SERVER的两种备份与恢复技术。
(1)通过查询分析器进行
---删除备份设备
exec sp_dropdevice 'qixin_bak'
--创建一个备份设备qixin_bak
EXEC sp_addumpdevice 'disk', 'qixin_bak','c:\qixin_bak.bak'
-- 备份qixin数据库
-- Specify the logical backup device.
BACKUP DATABASE qixin TO qixin_bak
-- Or, specify the physical backup device.
BACKUP DATABASE qixin TO DISK = 'c:\qixin_bak.bak'
--恢复数据库
RESTORE DATABASE qixin FROM qixin_bak
RESTORE DATABASE qixin FROM qixin_bak
WITH MOVE 'qixin' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\qixin.mdf',
MOVE 'qixin_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\qixin_log.ldf'
(2)利用图形化企业管理器进行
打开企业管理器,选择“管理”→备份,右键选择“新建备份设备”,见下图。
选择“管理”→备份,右键选择“备份数据库...”,见下图。
还原数据库时,选择要还原的数据库qixin,然后右键选择“所有任务”→“还原数据库”,见下图。
3、设计一个事务的运行过程,观察事务运行期间的数据库转储的情况,并总结数据库的动态转储特点。
(1)在“查询分析器”的一个连接窗口(连接1)中,运行事务,注意数据库选择qixin,见下图。
(2)备份数据库qixin,见下图。
(3)恢复上述备份为数据库qixin1,执行查询s操作。
新建一个数据库qixin1,然后还原备份内容到qixin1,在选项卡中选择“在现有数据库上强制还原”,见下图。
(4)在连接1窗口执行commit/Rollback,与(3)的查询结果进行比较并分析原因。见下图。