【数据库原理及安全实验】实验五 数据库备份与恢复
指导书原文
数据库的备份与恢复SSMS
【实验目的】
1) 熟悉并掌握利用界面操作进行数据库备份和恢复的原理和操作。
【实验原理】
1) 数据库的恢复包括大容量日志恢复模式和简单恢复模式。其中大容量日志恢复模式,简单地说就是要对大容量操作进行最小日志记录,节省日志文件的空间(如导入数据、批量更新、SELECT INTO等操作时)。而在简单恢复模式下,数据库会自动把不活动的日志删除,因此简化了备份的还原,但因为没有事务日志备份,所以不能恢复到失败的时间点。通常,简单恢复模式只用于对数据库数据安全要求不太高的数据库,并且在该模式下,数据库只能做完整和差异备份。
【实验环境】
windows7
SQL SERVER 2008
【实验步骤】
一、建表
1.1 开始→程序→Microsoft SQL Server 2008 R2→SQL Server Management Studio。
1.2 在“连接到服务器”对话框中,选择“Windows 身份验证”,点击“连接”,进 入SQL Server Management Studio操作界面。
1.3 创建student数据库(新建查询 并输入语句“create database student”)。利用如下SQL语句在student数据库中创建表(通过“use databasename;”语句或”展开数据库->右击 databasename->选择新建查询“,选择要操作的数据库,再执行查询、插入等操作命令)。
CREATE TABLE Student (
Sno char ( 7 ) PRIMARY KEY,
Sname char ( 10 ) NOT NULL,
Ssex char (2),
Sage tinyint ,
Sdept char (20)
)
CREATE TABLE Course (
Cno char(10) NOT NULL,
Cname char(20) NOT NULL,
Ccredit tinyint ,
Semester tinyint,
PRIMARY KEY(Cno)
)
CREATE TABLE SC
(
Sno char(7) NOT NULL,
Cno char(10) NOT NULL,
Grade tinyint,
XKLB char(4) ,
PRIMARY KEY ( Sno, Cno ) ,
FOREIGN KEY (Sno) REFERENCES Student (Sno),
FOREIGN KEY (Cno) REFERENCES Course (Cno)
)
二、完整性备份
2.1 单击服务器对象—>备份设备—>新建备份设备。如图1所示
图 1
2.2 创建永久备份设备:backup1,backup2。如图2、图3所示
图 2
图 3
2.3 备份设备backup1、backup2创建成功。如图4所示
图 4
2.4 右键student数据库,选择任务—>备份。如图5所示
图 5
2.5 对student数据库进行一次完整备份,并以追加的方式被分到backup1设备上。如图6所示
图 6
2.6 执行下述语句删除students数据库中的SC表drop table sc。如图7所示
图 7
2.7 删除student数据库。如图8所示
图 8
2.8 右键数据库,选择还原数据库。如图9所示
图 9
2.9 选择源备份,单击浏览按钮。如图10所示
图 10
2.10 选择备份设备,添加backup1。如图11所示
图 11
2.11 利用backup1设备上对student数据库进行的完整备份,恢复出student数据库。如图12所示
图 12
2.12 数据库student还原成功。如图13所示
图 13
三、差异备份
3.1 右键student数据库,选择任务—>备份。如图14所示
图 14
3.2 对student数据库进行一次完整备份并以覆盖的方式备份到backup1设备上,覆盖掉backup1设备上已有的备份内容。如图15所示
图 15
3.3 行下述语句在course表中插入一行新记录:INSERT INTO Course VALUES('C201','离散数学','','')。如图16所示
图 16
3.4 将student数据库以覆盖的方式差异备份到backup2设备上。如图17、图18所示
图17
图 18
3.5 执行语句删除新插入记录: DELETE FROM Course WHERE Cno='C201'。如图19所示
图 19
四、日志备份
4.1 删除student数据库。如图20所示
图 20
4.2 右键数据库,选择还原数据库。如图21所示
图 21
4.3 选择源设备,单击浏览按钮。如图22所示
图 22
4.4 选择备份设备,添加备份设备backup1。如图23所示
图 23
4.5 将student数据库的恢复模式设置为“完整”并进行还原。如图24所示
图 24
4.6 对student数据库进行一次完整备份,以覆盖的方式备份到backup1上。如图25所示
图 25
4.7 执行下述语句向Course表中插入一行新记录:INSERT INTO Course VALUES('C2002','编译原理','','') 。如图26所示
图 26
4.8 对student数据库进行差异备份,并以追加的方式备份到backup1上。如图27所示
图 27
4.9 执行语句: DELETE FROM Course WHERE Cno='C202' 。如图28所示
图 28
4.10 对student数据库进行一次日志备份,并以覆盖的方式备份到backup2。如图29所示
图29
图 29
实验报告
删除Warning
采用drop database student命令,我这边是根本删不掉数据库的。他的报错是:
消息 3702,级别 16,状态 3,第 1 行 无法删除数据库 "student",因为该数据库当前正在使用。
对此,首先我跳出了这个数据库,use另外的数据库,但是删不了
然后,采用手动删除,结果如下:
于是我破防了,这个实验在我这里实现不了,希望做成功的同志们评论区见,造福后人。
我只能把除了删除的操作做完,下面就是结果图。
日志备份warning
日志备份,在现在的SQLserver里面也没有,我同学问了老师。。。说不用做。
五、实验过程原始记录(数据、图表、计算等)
①完整性备份结果
②差异备份的结果
③日志备份结果
六、实验结果及分析
问题描述:利用backup1和backup2备份设备对students数据库的备份,恢复数据库。完全恢复后,在Course表中有新插入的记录吗?为什么?
答:没有,这是因为:
在实验的完整性备份部分,backup1 设备上存储的是 student 数据库的完整备份。这个备份是在执行 INSERT INTO Course 插入新记录之前创建的。因此,恢复 backup1 设备上的完整备份时,数据库的状态会回到备份时的状态,即 Course 表中不会有后续插入的新记录。
在实验的差异备份和日志备份部分,虽然进行了差异备份和日志备份,但在恢复时只使用了 backup1 设备上的完整备份。差异备份和日志备份记录了备份之后对数据库的修改(例如插入记录的操作),但这些备份需要在恢复完整备份之后依次应用,才能恢复数据库到最新的状态。由于实验中没有提到应用差异备份和日志备份,因此恢复后的数据库状态不会包含这些后续的修改。
在实验的 2.11 步骤中,仅使用 backup1 设备上的完整备份恢复了数据库。这种恢复方式只能还原到完整备份的时间点,而无法还原后续的更改,如插入记录的操作。
因此,完全恢复后,Course 表中不会有新插入的记录,因为恢复操作仅使用了完整备份,而没有应用后续的差异备份或日志备份。