您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 实验六-数据库备份与恢复
2017级计算机专业集美大学计算机工程学院2018~2019年第二学期1《数据库原理》实验报告一.实验目的:了解备份还原的概念掌握SQLServer的备份方法会选择适合的备份策略掌握常见故障的还原方法一、实验使用环境:SQLserver2012二、实验内容与完成情况:1.用系统内置的存储过程sp_addumpdevice创建一个备份设备SalesDatabase_Bak,保存在D盘根目录下,查看系统中有哪些备份设备。运行截图:也可手动创建:--题目1--在E:\Sale_bak创建本地磁盘备份文件execsp_addumpdevice'disk','SalesDatabase_Bak','E:\Sale_bak'--查看系统有哪些备份设备execsp_helpdevice2017级计算机专业集美大学计算机工程学院2018~2019年第二学期2实验小结:通过代码可以看到,添加一个名为SalesDatabase_Bak的磁盘备份设备,物理名为E:\Sale_bak,且在数据库目录中:/服务器对象/备份设备/,目录下可以看到名为SalesDatabase_Bak的备份设备。2.为销售管理数据库设置一个备份计划,名为SaleBackPlan,要求每天在上午12:00:00和下午12:00:00之间每2小时执行数据库日志备份。操作过程:连接数据库,在管理列表中找到维护计划,右键点击维护计划选择维护计划向导,名称为:SaleBackPlan.点击更改:进行以下设置:选择SaleBackPlan执行计划,计划类型为:重复执行。频率为:每天执行,2017级计算机专业集美大学计算机工程学院2018~2019年第二学期3每天执行的频率为:开始时间为12点,结束时间为0点,间隔为2小时,最下方说明中有详细的介绍。点击下一步,选择备份数据库(事务日志)选择特定数据库且为销售管理数据库:操作完成:2017级计算机专业集美大学计算机工程学院2018~2019年第二学期4实验小结:本题操作过程并不复杂,但是需要提前知道操作流程,注意细节问题即可3.新建一个数据库Sa1es1,使用DTS向导将前面已建的Sales数据库中的所有表导入到Sales1数据库中。要求不立即运行,而是创建一个Sales备份包,然后再执行运行。操作过程:数据源为销售管理数据库目标为Sale1数据库选择所有表:2017级计算机专业集美大学计算机工程学院2018~2019年第二学期5默认为:立即执行,此处按照题目要求选择保存SSIS包:包名为Sale1备份包成功执行:2017级计算机专业集美大学计算机工程学院2018~2019年第二学期6以管理员方式打开SQLServer连接完成后可以找到之前建立的SSIS包,右击,运行包。操作完成后可以看到成功导入所有表和数据。4.用命令方式实现下列功能:2017级计算机专业集美大学计算机工程学院2018~2019年第二学期71)在D盘根目录创建一个名为:Sales备份的本地磁盘备份文件2)查看系统中有哪些备份设备。3)创建数据库Sales的完全备份4)创建数据库Sales的事务日志备份。5)从备份设备Sales备份的完整数据库备份中恢复数据库Sales。6)删除特定备份设备。7)创建储存过程,实现备份数据库,输入二个参数,第一个是数据库名,第二个参数是备份类型。并以当前系统时间作为备份名。例如:备份名为:stu_2019-0606.bak1)在E盘根目录创建一个名为:Sales备份的本地磁盘备份文件2)查看系统中所有备份设备。运行结果:3)创建数据库Sales的完全备份运行结果:4)创建数据库Sales的事务日志备份。运行结果:--在d:\Sale_bak创建本地磁盘备份文件execsp_addumpdevice'disk','Sales','E:\'--查看系统有哪些备份设备execsp_helpdevice--创建销售管理的完全备份backupdatabase销售管理toDisk_sales--创建数据库Sales的事务日志备份。BACKUPLOG销售管理toSalesWITHNORECOVER2017级计算机专业集美大学计算机工程学院2018~2019年第二学期85)从备份设备Sales备份的完整数据库备份中恢复数据库Sales。运行结果:6)删除备份设备。运行结果:前后对比:7)创建储存过程,实现备份数据库,输入二个参数,第一个是数据库名,第二个参数是备份类型。并以当前系统时间作为备份名。例如:备份名为:stu_2019-0606.bak--从备份设备Sales的完整数据库备份中恢复数据库销售管理usemasterrestoredatabase销售管理fromSales--删除是备份设备execsp_dropdevice'Sales'gocreateprocpro_backup@DatabaseNamevarchar(20),--输入要备份的数据库名@Typechar(15)--输入的备份类型(支持完整备份、差异备份、日志备份)asbegindeclare@namechar(30)declare@sqlvarchar(255)2017级计算机专业集美大学计算机工程学院2018~2019年第二学期9测试代码:、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='差异备份'beginset@sql=@sql+'withdifferential'--将代码改为差异备份print@sqlendelseif@Type='完整备份'beginset@sql=@sql--如果是完整备份,不进行改变endelseif@Type='日志备份'beginset@sql='backuplog'+@DatabaseName+'todisk='+'''h:\'+@name+''''--将代码改为备份endelse--若三种都不是beginprint'输入错误,请重新输入'returnendexecute(@sql)--运行sql代码endExecpro_backup'stu','完整备份'Execpro_backup'stu','差异备份'2017级计算机专业集美大学计算机工程学院2018~2019年第二学期10运行结果:且E盘根目录下存在该备份文件‘解题思路:本题使用存储过程,将数据库名和备份类型输入,存储过程里声明@sql,并对@sql进行赋值,赋值内容为完整备份的方式备份数据库的代码。然后用if…elseif…进行判断,判断输入的备份类型,并在符合条件的条件语句中对@sql进行修改,在循环结束后用exec运行@sql所包含的代码。5.管理员对数据库执行了一次完整备份和多次日志备份,并且备份文件保持良好。某天数据文件遭到破坏,管理员需要尽快恢复数据。验证数据是否和破坏前一致,自已给出测试数据。实现思路:添加数据至数据库中停止服务更改数据文件名,模拟数据文件破坏SQLServer可以使用事务日志重做己确认的事务还原完整+事务日志备份数据库结构:数据表C的数据:2017级计算机专业集美大学计算机工程学院2018~2019年第二学期11进行完整备份更改数据库数据后:进行日志备份:2017级计算机专业集美大学计算机工程学院2018~2019年第二学期12再次更改数据:再次进行日志备份:更改数据表名称C为test:开始恢复备份:可以看到在还原界面,一共有三次记录,其中一次是完整备份,两次事务日志备份,先选择完整性备份进行还原:恢复结果:表名成功还原2017级计算机专业集美大学计算机工程学院2018~2019年第二学期13数据成功还原:下面开始恢复日志备份:选择完整备份与日志备份进行还原:数据库第一次更改内容成功还原:下面进行第二次日志的还原:成功恢复第二次日志备份的数据:三、出现的的问题及解决方案(列出遇到的问题和解决办法,列出没有解决的问题)问题:还原数据库时显示还原数据库无效:2017级计算机专业集美大学计算机工程学院2018~2019年第二学期14解决办法:出现报错是因为数据库正在使用,关闭当前数据库即可。问题:还原数据库时,数据库一直处于正在还原状态,无法对数据库进行任何操作。解决办法:主要时因为恢复进程被挂起了,将数据库恢复并且回到可访问状态,需要执行:使恢复过程能完全结束解决问题。问题:导出到SSIS包之后不知如何执行SSIS包。解决办法:询问老师后得知需要打开代理服务器,并且以IntergrationServices的方式认证登录数据库,再在其中进行操作。RESTOREdatabase销售管理withrecovery2017级计算机专业集美大学计算机工程学院2018~2019年第二学期15问题:以上操作,点击登陆时报错。解决办法:以管理员方式打开,即可解决问题。问题:备份时报错:解决办法:在非根目录备份。问题:用getdate()方法输出如下时间格式,不符合要求解决办法:修改获取时间格式的方式。四、实验小结。本次实验主要内容涉及备份与恢复,本次实验之前,对有关备份的各种概念都搞不太清楚,上课听的有点糊里糊涂,但是这次试验通过查找各种资料以及实验的验证等之后,对这些有了更深层次的了解:1.完全备份:对整个目标数据库进行完全备份,包括系统和数据。这种备份方式的好处就是很直观,容易被人理解,当数据丢失时容易恢复。但是它也有不足之处:若每次都对数据进行完全备份,在备份数据中有大量重复的数据,这些重复的数据占用大量的存储空间;并且,由于需要备份的数据量相当大,因此备份所需的时间比较长。2.差异备份:每次备份的数据是相对于上一次完全备份之后增加和修改过的数据。它以前一次完全备份为基础,备份完全备份之后变化的数据文件、日志文件以及数据库中其它被修改的内容。因此,差异备份通常比全备份占用的时间小且执行速度快,但是会增加备份的复杂程度。3.事务日志备份:日志备份不备份数据库本身,它只是备份日志记录,从而只备份上次备份(差异2017级计算机专业集美大学计算机工程学院2018~2019年第二学期16备份或者日志备份)之后到当前备份时间发生变化的日志内容。一般情况下,日志备份比完整备份和差异备份使用的资源少,因此可以更频繁的使用日志备份,以减少数据丢失的风险。除此之外,SQLserver还能根据时间线进行恢复:尽管本次实验大多为直接进行操作,且感觉直接操作不仅方便而且直观,遇到的bug少,但是在实验过程中也在努力尝试使用命令的方式实现备份,其中也遇到了挺多问题,有的代码不能很好的理解含义,但是用命令和直接操作处理相同的问题时,进行对比后就明了了很多。第四题的第七小问是做的最久的一题,因为此题需要用存储过程对输入数据进行操作,过程较复杂,标点符号容易出错,但是在各方面力量的帮助下成功解决了此题。本次实验操作较多,并不想之前实验类型一样去解决感觉距离较远的问题,而是备份恢复这种平时也会用到的应用,不仅理解了很多之前不理解的概念,在操作上也更加熟练,收获颇多。
本文标题:实验六-数据库备份与恢复
链接地址:https://www.777doc.com/doc-5619870 .html