11.30数据库备份和恢复实验内容
--1、定义一个事务,向studentmanager数据库的student表添加一行数据,然后删除该行数据;
--但执行后,新插入的数据行并没有删除,
--因为事务中使用了ROLLBACK语句将操作回滚到保存点My_sav,即删除前的状态。
BEGIN TRANSACTION My_tran
USE studentmanager
INSERT INTO student(s_id,s_name)
VALUES('081115', '胡新华')
SAVE TRANSACTION My_sav
DELETE FROM student WHERE s_id='081115'
ROLLBACK TRAN My_sav
COMMIT WORK
GO
--执行完上述语句后使用SELECT语句查询student表中的记录:
SELECT * FROM student WHERE s_id='081115'
--二、数据库的备份和恢复
--要求用SQL命令和图形界面两种方式实现以下各功能。
--1.备份整个数据库
--(1)使用逻辑名test1在d盘中创建一个命名的备份设备,并将数据库studentmanager完全备份到该设备。
USE master
GO
EXEC sp_addumpdevice 'disk' , 'test1', 'd:\data\test1.bak'
BACKUP DATABASE studentmanager TO test1
--已为数据库 'studentmanager',文件 'studentmanager' (位于文件 2 上)处理了 224 页。
--已为数据库 'studentmanager',文件 'studentmanager_log' (位于文件 2 上)处理了 1 页。
--BACKUP DATABASE 成功处理了 225 页,花费 0.031 秒(56.703 MB/秒)。
--(2)将数据库studentmanager备份到多个备份设备。
USE master
GO
EXEC sp_addumpdevice 'disk','test2','d:\data\test2.bak'
EXEC sp_addumpdevice 'disk','test3','d:\data\test3.bak'
BACKUP DATABASE studentmanager TO test2,test3
WITH NAME ='studentmanagerbk'
--已为数据库 'studentmanager',文件 'studentmanager' (位于文件 1 上)处理了 224 页。
--已为数据库 'studentmanager',文件 'studentmanager_log' (位于文件 1 上)处理了 1 页。
--BACKUP DATABASE 成功处理了 225 页,花费 0.019 秒(92.516 MB/秒)。
--2、差异备份
--(1)创建临时备份设备并在所创建的临时备份设备上进行差异备份。
BACKUP DATABASE studentmanager TO
DISK ='d\data\studentbk.bak' WITH DIFFERENTIAL
--3、备份日志文件
--创建一个命名的备份设备studentlogbk,并备份studentmanager数据库的事务日志。
USE master
GO
EXEC sp_addumpdevice 'disk','studentlogbk','d:\data\testlog.bak'
BACKUP LOG studentmanager TO studentlogbk
--已为数据库 'studentmanager',文件 'studentmanager_log' (位于文件 1 上)处理了 9 页。
--BACKUP LOG 成功处理了 9 页,花费 0.007 秒(9.626 MB/秒)。
--4、恢复整个数据库
--使用RESTORE语句从一个已存在的命名备份介质student1中恢复整个数据库studentmanager。
--首先创建备份设备student1:
USE master
GO
EXEC sp_addumpdevice 'disk', ' student1','d:\data\student1.bak'
--使用BACKUP命令对studentmanager数据进行完全备份:
BACKUP DATABASE studentmanager TO student1
--恢复数据库的命令如下:
RESTORE DATABASE studentmanager FROM student1 WITH FILE=1, REPLACE