数据库原理与应用实验16_.doc

上传人:bao****ty 文档编号:144655644 上传时间:2020-09-12 格式:DOC 页数:34 大小:2.05MB
返回 下载 相关 举报
数据库原理与应用实验16_.doc_第1页
第1页 / 共34页
数据库原理与应用实验16_.doc_第2页
第2页 / 共34页
数据库原理与应用实验16_.doc_第3页
第3页 / 共34页
数据库原理与应用实验16_.doc_第4页
第4页 / 共34页
数据库原理与应用实验16_.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数据库原理与应用实验16_.doc》由会员分享,可在线阅读,更多相关《数据库原理与应用实验16_.doc(34页珍藏版)》请在金锄头文库上搜索。

1、实验十六数据备份、恢复和导入导出姓名:计算机科学与技术学号:专业:班级:同组人:无实验日期:【实验目的与要求】1 学会使用企业管理器、备份命令创建和删除命名备份设备。2 掌握使用企业管理器、备份命令进行数据库的备份。3 掌握使用企业管理器和恢复命令进行数据库的恢复。4 掌握数据的导入导出。【实验内容与步骤】16.1 正常情况下的数据备份与恢复1、创建命名备份设备在C:Program FilesMicrosoft SQL ServerMSSQLBACKUP下创建一个名为“test1”的命名备份设备。2、数据库的备份和恢复(1)将整个CPXS数据库备份到test1,并利用该备份集恢复CPXS数据库

2、。(2)在CPXS数据库中增加表s1。create table s1(sno char(5), sname char(10)再差异备份CPXS数据库追加到test1。恢复时,先用test1备份设备上媒体集1恢复CPXS,再用test1备份设备上媒体集2 对CPXS数据库进行差异恢复。注意过程和观察结果。(3)在CPXS数据库中增加表s。create table s(sno char(5), sname char(10) on uu再将文件组uu追加备份到test1,并将日志追加备份到test1。恢复时,先用test1备份设备上媒体集1恢复CPXS,再用test1备份设备上媒体集2对CPXS数据

3、库进行差异恢复,接着用test1备份设备上媒体集1恢复文件组uu,然后用test1备份设备上媒体集4进行日志恢复。注意过程和观察结果。16.2 异常情况下的数据恢复1、部分数据文件损坏的修复处理请完成以下练习,理解每一个操作过程:-创建数据库CREATE DATABASE dbON PRIMARY(NAME=db_data,FILENAME= c:db_data.mdf),FILEGROUP db_fg1(NAME = db_fg1_data,FILENAME = c:db_fg1_data.ndf),FILEGROUP db_fg2(NAME = db_fg2_data,FILENAME =

4、 c:db_fg2_data.ndf)LOG ON(NAME=db_log,FILENAME =c:db.ldf)GO-创建表CREATE TABLE db.dbo.ta(id int) ON PRIMARYCREATE TABLE db.dbo.tb(id int) ON db_fg1CREATE TABLE db.dbo.tc(id int) ON db_fg2INSERT db.dbo.tb SELECT id FROM sysobjectsGO-做文件组备份BACKUP DATABASE db FILEGROUP=db_fg1 TO DISK=c:db_fg1.bak WITH FOR

5、MAT-备份后,再做数据处理INSERT db.dbo.ta SELECT id FROM sysobjectsGO/*-下面演示了破坏数据文件的处理,这些操作在操作系统中进行1. 停止SQL Server服务(msqlserver服务)2. 删除文件 c:db_fg1_data.ndf (模拟破坏)3. 重新SQL Server服务,此时数据库DB置疑-*/GO-下面演示了如何恢复数据-首先要备份当前日志BACKUP LOG db TO DISK=c:db_log.bak WITH FORMAT,NO_TRUNCATE-利用文件组备份恢复破坏的文件RESTORE DATABASE db FI

6、LEGROUP=db_fg1 FROM DISK=c:db_fg1.bak WITH NORECOVERY-还原到日志点RESTORE LOG db FROM DISK=c:db_log.bak WITH RECOVERY-显示已经恢复的数据SELECT COUNT(*) FROM db.dbo.tbSELECT COUNT(*) FROM db.dbo.taGO-删除测试DROP DATABASE db2、仅有日志文件的数据修复处理-创建数据库CREATE DATABASE dbON PRIMARY(NAME=db_data,FILENAME= c:db_data.mdf)LOG ON(NA

7、ME=db_log,FILENAME =c:db.ldf)GO-创建表CREATE TABLE db.dbo.ta(id int)INSERT db.dbo.ta SELECT id FROM sysobjectsGO-做文件组备份BACKUP DATABASE db TO DISK=c:db.bak WITH FORMAT-备份后,再做数据处理CREATE TABLE db.dbo.tb(id int)INSERT db.dbo.tb SELECT id FROM sysobjectsGO/*-下面演示了破坏数据文件的处理,这些操作在操作系统中进行1. 停止SQL Server服务(msql

8、server服务)2. 删除文件 c:db_data.ndf (模拟破坏)3. 重新SQL Server服务,此时数据库DB置疑-*/GO-下面演示了如何恢复数据-首先要备份当前日志BACKUP LOG db TO DISK=c:db_log.bak WITH FORMAT,NO_TRUNCATE-利用文件组备份恢复破坏的文件RESTORE DATABASE db FROM DISK=c:db.bak WITH NORECOVERY-还原到日志点RESTORE LOG db FROM DISK=c:db_log.bak WITH RECOVERY-显示已经恢复的数据SELECT COUNT(*

9、) FROM db.dbo.taSELECT COUNT(*) FROM db.dbo.tbGO3、数据还原到指定时间点的处理-创建测试数据库CREATE DATABASE DbGO-对数据库进行备份BACKUP DATABASE Db TO DISK=c:db.bak WITH FORMATGO-创建测试表CREATE TABLE Db.dbo.TB_test(ID int)-延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)WAITFOR DELAY 00:00:01GO-假设我们现在误操作删除了 Db.db

10、o.TB_test 这个表DROP TABLE Db.dbo.TB_test-保存删除表的时间SELECT dt=GETDATE() INTO #GO-在删除操作后,发现不应该删除表 Db.dbo.TB_test-下面演示了如何恢复这个误删除的表 Db.dbo.TB_test-首先,备份事务日志(使用事务日志才能还原到指定的时间点)BACKUP LOG Db TO DISK=c:db_log.bak WITH FORMATGO-接下来,要先还原完全备份(还原日志必须在还原完全备份的基础上进行)RESTORE DATABASE Db FROM DISK=c:db.bak WITH REPLACE

11、,NORECOVERYGO-将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早DECLARE dt datetimeSELECT dt=DATEADD(ms,-20,dt) FROM # -获取比表被删除的时间略早的时间RESTORE LOG Db FROM DISK=c:db_log.bak WITH RECOVERY,STOPAT=dtGO-查询一下,看表是否恢复SELECT * FROM Db.dbo.TB_test请给出测试结果:-最后删除所做的测试环境DROP DATABASE DbDROP TABLE #4、在现有数据库上还原时的数据文件处理-创建一个测试数

12、据库CREATE DATABASE dbON(NAME=db,FILENAME=c:db.mdf)LOG ON(NAME=db_log,FILENAME=c:db.ldf)-备份并删除测试数据库BACKUP DATABASE db TO DISK=c:a.bak WITH FORMATDROP DATABASE db-创建一个文件结构相同,但物理文件位置不同的数据库CREATE DATABASE dbON(NAME=db,FILENAME=d:db.mdf)LOG ON(NAME=db_log,FILENAME=d:db.ldf)-在新建的数据库上强制还原备份RESTORE DATABASE

13、db FROM DISK=c:a.bak WITH REPLACE-查看还原后的文件位置SELECT name,filename FROM db.dbo.sysfiles请给出测试结果:-删除测试5、备份数据库,并按日期生成备份目录/*-调用示例-备份当前数据库exec p_backupdb -*/if exists (select * from dbo.sysobjects where id = object_id(Ndbo.p_backupdb) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.p_backupdbGO

14、create proc p_backupdbdbname sysname=,-要备份的数据库名称,不指定则备份当前数据库bkfname nvarchar(260)=,-备份文件名,文件名中可以用DBNAME代表数据库名,DATE代表日期,TIME代表时间bkpath nvarchar(260)=c:-备份文件的存放目录,在该目录下创建每天备份的目录asdeclare sql varchar(8000)if isnull(dbname,)= set dbname=db_name()if right(bkpath,1) set bkpath=bkpath+set bkpath=bkpath+convert(varchar,getdate

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号