实验十五 数据库的备份和恢复
实验目的:
了解数据库的备份和恢复 了解数据库备份和恢复的意义 掌握数据库备份和恢复的方法
实验环境:
PC机+SQL Server 2000
实验内容:
一、 全库备份和恢复
全库备份是每次备份都备份整个数据库。 1. 对pubs数据库作全库备份 在E:盘中创建文件夹pubsbak 创建备份设备pubsfull Use master go
Exec sp_addumpdevice ‘disk’,’pubsfull’,’e:\\pubsbak\\pubsfull.bak’ Backup database pubs to pubsfull 2.删除pubs数据库中的authors表 Use pubs Go
Drop table authors
3.通过对全库备份的恢复来重新得到authors表 Use master Go
Restore database pubs from pubsfull
刷新下PUBS数据库,查看authors表是否被恢复了? 二、 差异备份和恢复
差异备份是第一次备份时备份整个数据库,以后每次备份时都只是备份最新更新的数据库部分。
1.对pubs数据库作全库备份 在E:盘中创建文件夹pubscy 创建备份设备pubscyfull Use master go
Exec sp_addumpdevice ‘disk’,’pubscyfull’,’e:\\pubscy\\pubscyfull.bak’ Backup database pubs to pubscyfull 2.在pubs数据库添加一个学生表 Use pubs Go
Create table xs
(学号 vachar(6) not null primary key, 姓名 varchar(8))
3.对pubs数据库作差异备份 Use master go
Exec sp_addumpdevice ‘disk’,’pubscy’,’e:\\pubscy\\pubscy.bak’ Backup database pubs to pubscy with differential 4.删除pubs数据库 use master go
drop database pubs
5.通过前面作的备份来恢复数据库到删除时的状态。(先通过全库备份来恢复,再通过差异备份来恢复) Use master go
Restore database pubs from pubscyfull with norecovery Restore database pubs from pubscy 刷新数据库,看是否恢复到原来状态? 三、 事务日志备份和恢复
事务日志备份是第一次备份时备份整个数据库,以后每次备份时都只是备份数据库的事务日志部分。
在备份前需要将数据库故障恢复模型改为”完全”(full)或者”大容量日志记录的”(bulk_logged) Alter dabase pubs Set recovery full
1.对pubs数据库作全库备份 在E:盘中创建文件夹pubsrz 创建备份设备pubsrzfull Use master go
Exec sp_addumpdevice ‘disk’,’pubsrzfull’,’e:\\pubsrz\\pubsrzfull.bak’ Backup database pubs to pubsrzfull
2.在northwind数据库添加一个课程表 Use pubs Go
Create table kc
(课程号 varchar(3) not null primary key, 课程名 vachar(8))
3.对northwind数据库作事务日志备份 Use master go
Exec sp_addumpdevice ‘disk’,’pubsrz’,’e:\\pubsrz\\pubsrz.bak’ Backup log pubs to pubsrz
4.删除northwind数据库 Use master Go
Drop database pubs
5.通过前面作的备份来恢复数据库到删除时的状态。(先通过全库备份来恢复,再通过事务日志备份来恢复) Use master go
Restore database pubs from pubsrzfull with norecovery Restore log pubs from pubsrz
刷新数据库,看是否恢复到原来状态?
四、 文件和文件组备份和恢复
文件和文件组备份是每次只备份数据库中的一个文件或文件组。 在备份前需要将数据库故障恢复模型改为”完全” alter database pubs set recovery full
1. 在pubs数据库中添加一个文件组fgroup Use master go
Alter database pubs Add filefroup fgroup
2. 在pubs数据库中添加一个数据文件pubs_data2,加到文件组filegroup中 在e:盘下建立一个文件夹pubs Alter database pubs Add file
(name =pubs_data2,
Filename=’e:\\pubs\\ pubs_data2.ndf’) To filegroup fgroup
3.通过SQL语句创建一个成绩表放到文件组filegroup。(通过这三步就可以实现将成绩表存放到我们指定的文件pubs_data中的目的) Use pubs Go
Create table cji
(学号 varchar(6) not null, 课程号varchar(3) not null, Primary key(学号,课程号), 成绩 int ) On fgroup
3. 对pubs_data2文件进行备份(文件备份好后要马上备份一下事务日志,恢复数据库时要
用到事务日志)
在e:盘建立文件夹pubswj Use master Go
Backup database pubs file=’ pubs_data2’ to disk=‘e:\\pubswj\\pubsdata.bak’ Backup log pubs to disk=‘e:\\pubswj\\pubslog.bak’
5.删除成绩表 Use pubs Go
Drop table cji
6.通过对pubs_data2备份文件的恢复来恢复删除的成绩表 Use master Go
Restore database pubs file=’ pubs_data2’ from disk=‘e:\\pubswj\\pubsdata.bak’ with norecovery Restore log pubs to disk=‘e:\\pubswj\\pubslog.bak’ 刷新数据库,看cji表是否存在? 思考题:
差异备份和全库备份在使用时有何不同,各适用什么环境?