实验六 数据库备份与恢复.docx

上传人:b****3 文档编号:6054570 上传时间:2023-05-09 格式:DOCX 页数:20 大小:800.40KB
下载 相关 举报
实验六 数据库备份与恢复.docx_第1页
第1页 / 共20页
实验六 数据库备份与恢复.docx_第2页
第2页 / 共20页
实验六 数据库备份与恢复.docx_第3页
第3页 / 共20页
实验六 数据库备份与恢复.docx_第4页
第4页 / 共20页
实验六 数据库备份与恢复.docx_第5页
第5页 / 共20页
实验六 数据库备份与恢复.docx_第6页
第6页 / 共20页
实验六 数据库备份与恢复.docx_第7页
第7页 / 共20页
实验六 数据库备份与恢复.docx_第8页
第8页 / 共20页
实验六 数据库备份与恢复.docx_第9页
第9页 / 共20页
实验六 数据库备份与恢复.docx_第10页
第10页 / 共20页
实验六 数据库备份与恢复.docx_第11页
第11页 / 共20页
实验六 数据库备份与恢复.docx_第12页
第12页 / 共20页
实验六 数据库备份与恢复.docx_第13页
第13页 / 共20页
实验六 数据库备份与恢复.docx_第14页
第14页 / 共20页
实验六 数据库备份与恢复.docx_第15页
第15页 / 共20页
实验六 数据库备份与恢复.docx_第16页
第16页 / 共20页
实验六 数据库备份与恢复.docx_第17页
第17页 / 共20页
实验六 数据库备份与恢复.docx_第18页
第18页 / 共20页
实验六 数据库备份与恢复.docx_第19页
第19页 / 共20页
实验六 数据库备份与恢复.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验六 数据库备份与恢复.docx

《实验六 数据库备份与恢复.docx》由会员分享,可在线阅读,更多相关《实验六 数据库备份与恢复.docx(20页珍藏版)》请在冰点文库上搜索。

实验六 数据库备份与恢复.docx

实验六数据库备份与恢复

《数据库原理》实验报告

一.实验目的:

●了解备份还原的概念

●掌握SQLServer的备份方法

●会选择适合的备份策略

●掌握常见故障的还原方法

一、实验使用环境:

SQLserver2012

二、实验内容与完成情况:

1.用系统内置的存储过程sp_addumpdevice创建一个备份设备SalesDatabase_Bak,保存在D盘根目录下,查看系统中有哪些备份设备。

--题目1

--在E:

\Sale_bak创建本地磁盘备份文件

execsp_addumpdevice'disk','SalesDatabase_Bak','E:

\Sale_bak'

--查看系统有哪些备份设备

execsp_helpdevice

 

运行截图:

也可手动创建:

实验小结:

通过代码可以看到,添加一个名为SalesDatabase_Bak的磁盘备份设备,物理名为E:

\Sale_bak,且在数据库目录中:

/服务器对象/备份设备/,目录下可以看到名为SalesDatabase_Bak的备份设备。

2.为销售管理数据库设置一个备份计划,名为SaleBackPlan,要求每天在上午12:

00:

00和下午12:

00:

00之间每2小时执行数据库日志备份。

操作过程:

连接数据库,在管理列表中找到维护计划,右键点击维护计划选择维护计划向导,名称为:

SaleBackPlan.

点击更改:

进行以下设置:

选择SaleBackPlan执行计划,计划类型为:

重复执行。

频率为:

每天执行,每天执行的频率为:

开始时间为12点,结束时间为0点,间隔为2小时,最下方说明中有详细的介绍。

点击下一步,选择备份数据库(事务日志)

选择特定数据库且为销售管理数据库:

操作完成:

实验小结:

本题操作过程并不复杂,但是需要提前知道操作流程,注意细节问题即可

3.新建一个数据库Sa1es1,使用DTS向导将前面已建的Sales数据库中的所有表导入到Sales1数据库中。

要求不立即运行,而是创建一个Sales备份包,然后再执行运行。

操作过程:

数据源为销售管理数据库

目标为Sale1数据库

选择所有表:

默认为:

立即执行,此处按照题目要求选择保存SSIS包:

包名为Sale1备份包

成功执行:

以管理员方式打开SQLServer

连接完成后可以找到之前建立的SSIS包,右击,运行包。

操作完成后可以看到成功导入所有表和数据。

4.用命令方式实现下列功能:

1)在D盘根目录创建一个名为:

Sales备份的本地磁盘备份文件

2)查看系统中有哪些备份设备。

3)创建数据库Sales的完全备份

4)创建数据库Sales的事务日志备份。

5)从备份设备Sales备份的完整数据库备份中恢复数据库Sales。

6)删除特定备份设备。

7)创建储存过程,实现备份数据库,输入二个参数,第一个是数据库名,第二个参数是备份类型。

并以当前系统时间作为备份名。

例如:

备份名为:

stu_2019-0606.bak

1)在E盘根目录创建一个名为:

Sales备份的本地磁盘备份文件

--在d:

\Sale_bak创建本地磁盘备份文件

execsp_addumpdevice'disk','Sales','E:

\'

 

2)查看系统中所有备份设备。

--查看系统有哪些备份设备

execsp_helpdevice

 

运行结果:

3)创建数据库Sales的完全备份

--创建销售管理的完全备份

backupdatabase销售管理toDisk_sales

 

运行结果:

4)创建数据库Sales的事务日志备份。

--创建数据库Sales的事务日志备份。

BACKUPLOG销售管理toSalesWITHNORECOVER

运行结果:

5)从备份设备Sales备份的完整数据库备份中恢复数据库Sales。

--从备份设备Sales的完整数据库备份中恢复数据库销售管理

usemaster

restoredatabase销售管理fromSales

 

运行结果:

6)删除备份设备。

--删除是备份设备

execsp_dropdevice'Sales'

 

运行结果:

前后对比:

7)创建储存过程,实现备份数据库,输入二个参数,第一个是数据库名,第二个参数是备份类型。

并以当前系统时间作为备份名。

例如:

备份名为:

stu_2019-0606.bak

go

createprocpro_backup

@DatabaseNamevarchar(20),--输入要备份的数据库名

@Typechar(15)--输入的备份类型(支持完整备份、差异备份、日志备份)

as

begin

declare@namechar(30)

declare@sqlvarchar(255)

 

set@name=@DatabaseName+'_'+

convert(varchar,datepart(yy,Getdate()))+'-'+

convert(varchar,datepart(mm,Getdate()))+'-'+

convert(varchar,datepart(dd,Getdate()))+'-'+

'.bak'

set@sql='backupdatabase'+@DatabaseName+'todisk='+'''e:

\'+@name+''''--备份代码,初始为完整备份

if@Type='差异备份'

begin

set@sql=@sql+'withdifferential'--将代码改为差异备份

print@sql

end

elseif@Type='完整备份'

begin

set@sql=@sql--如果是完整备份,不进行改变

end

elseif@Type='日志备份'

begin

set@sql='backuplog'+@DatabaseName+'todisk='+'''h:

\'+@name+''''--将代码改为备份

end

else--若三种都不是

begin

print'输入错误,请重新输入'

return

end

execute(@sql)--运行sql代码

end

 

测试代码:

Execpro_backup'stu','完整备份'

Execpro_backup'stu','差异备份'

 

运行结果:

且E盘根目录下存在该备份文件

解题思路:

本题使用存储过程,将数据库名和备份类型输入,存储过程里声明@sql,并对@sql进行赋值,赋值内容为完整备份的方式备份数据库的代码。

然后用if…elseif…进行判断,判断输入的备份类型,并在符合条件的条件语句中对@sql进行修改,在循环结束后用exec运行@sql所包含的代码。

5.管理员对数据库执行了一次完整备份和多次日志备份,并且备份文件保持良好。

某天数据文件遭到破坏,管理员需要尽快恢复数据。

验证数据是否和破坏前一致,自已给出测试数据。

实现思路:

添加数据至数据库中

停止服务更改数据文件名,模拟数据文件破坏

SQLServer可以使用事务日志重做己确认的事务

还原完整+事务日志备份

数据库结构:

数据表C的数据:

进行完整备份

更改数据库数据后:

进行日志备份:

再次更改数据:

再次进行日志备份:

更改数据表名称C为test:

开始恢复备份:

可以看到在还原界面,一共有三次记录,其中一次是完整备份,两次事务日志备份,先选择完整性备份进行还原:

恢复结果:

表名成功还原

数据成功还原:

下面开始恢复日志备份:

选择完整备份与日志备份进行还原:

数据库第一次更改内容成功还原:

下面进行第二次日志的还原:

成功恢复第二次日志备份的数据:

三、出现的的问题及解决方案(列出遇到的问题和解决办法,列出没有解决的问题)

问题:

还原数据库时显示还原数据库无效:

解决办法:

出现报错是因为数据库正在使用,关闭当前数据库即可。

问题:

还原数据库时,数据库一直处于正在还原状态,无法对数据库进行任何操作。

解决办法:

主要时因为恢复进程被挂起了,将数据库恢复并且回到可访问状态,需要执行:

RESTOREdatabase销售管理withrecovery

 

使恢复过程能完全结束解决问题。

问题:

导出到SSIS包之后不知如何执行SSIS包。

解决办法:

询问老师后得知需要打开代理服务器,并且以IntergrationServices的方式认证登录数据库,再在其中进行操作。

问题:

以上操作,点击登陆时报错。

解决办法:

以管理员方式打开,即可解决问题。

问题:

备份时报错:

解决办法:

在非根目录备份。

问题:

用getdate()方法输出如下时间格式,不符合要求

解决办法:

修改获取时间格式的方式。

四、实验小结。

本次实验主要内容涉及备份与恢复,本次实验之前,对有关备份的各种概念都搞不太清楚,上课听的有点糊里糊涂,但是这次试验通过查找各种资料以及实验的验证等之后,对这些有了更深层次的了解:

1.完全备份:

对整个目标数据库进行完全备份,包括系统和数据。

这种备份方式的好处就是很直观,容易被人理解,当数据丢失时容易恢复。

但是它也有不足之处:

若每次都对数据进行完全备份,在备份数据中有大量重复的数据,这些重复的数据占用大量的存储空间;并且,由于需要备份的数据量相当大,因此备份所需的时间比较长。

2.差异备份:

每次备份的数据是相对于上一次完全备份之后增加和修改过的数据。

它以前一次完全备份为基础,备份完全备份之后变化的数据文件、日志文件以及数据库中其它被修改的内容。

因此,差异备份通常比全备份占用的时间小且执行速度快,但是会增加备份的复杂程度。

3.事务日志备份:

日志备份不备份数据库本身,它只是备份日志记录,从而只备份上次备份(差异备份或者日志备份)之后到当前备份时间发生变化的日志内容。

一般情况下,日志备份比完整备份和差异备份使用的资源少,因此可以更频繁的使用日志备份,以减少数据丢失的风险。

除此之外,SQLserver还能根据时间线进行恢复:

尽管本次实验大多为直接进行操作,且感觉直接操作不仅方便而且直观,遇到的bug少,但是在实验过程中也在努力尝试使用命令的方式实现备份,其中也遇到了挺多问题,有的代码不能很好的理解含义,但是用命令和直接操作处理相同的问题时,进行对比后就明了了很多。

第四题的第七小问是做的最久的一题,因为此题需要用存储过程对输入数据进行操作,过程较复杂,标点符号容易出错,但是在各方面力量的帮助下成功解决了此题。

本次实验操作较多,并不想之前实验类型一样去解决感觉距离较远的问题,而是备份恢复这种平时也会用到的应用,不仅理解了很多之前不理解的概念,在操作上也更加熟练,收获颇多。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2