第14章以进为退数据库与恢复_第1页
第14章以进为退数据库与恢复_第2页
第14章以进为退数据库与恢复_第3页
第14章以进为退数据库与恢复_第4页
第14章以进为退数据库与恢复_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第14章数据库备份与恢复一个数据库管理员,为了保证数据库里的数据万无一失,必须要定期对数据库进行备份,一旦数据库出现了问题,可以从备份的文件里最大程度地还原数据。本章就来讲解SQLServer备份的类型、恢复的模式、如何备份数据库、如何还原数据库、备份设备的管理及自动备份的相关内容14.1备份与恢复简介相信大多数人都会同意数据库里的数据要比数据库本身要重要得多,但是因为种种原因,如磁盘故障、计算机硬件故障、用户操作失误等,都有可能会损坏数据。为了保证在发生这些意外的时候可以最大限度地挽救数据,数据库管理员必须要经常备份数据库里的数据。SQLServer2008提供了强大的备份和还原的功能。14.1.1备份类型完整备份可能比较好理解,例如说,在2013年1月1日早上8点进行了完整备份,那么将来在还原时,就可以恢复到2013年1月1日早上8点时的数据库状态。差异备份是备份完整备份后的数据变动情况。例如在2013年1月1日早上8点进行了完整备份后,在1月2日和1月3日又进行差异备份,那么在1月2日的差异备份里记录的是从1月1日到1月2日这一段时间里的数据变动情况;而在1月3日的差异备份里记录的是从1月1日到1月3日之一段时间里的数据变动情况。因此,如果要还原到1月3日的数据,只要先还原1月1日做的完整备份,再还原1月3日做的差异备份就可以了。事务日志备份是以事务日志文件作为备份对象,相当于将数据库里的每一个操作都记录下来了。假设在2013年1月1日早上8点进行了完整备份后,到1月2日早上8点为止,数据库里的数据变动了一百次,如果此时做了差异备份,那么差异备份记录的是第一百次数据变动后的数据库状态,而如果此时做了事务日志备份,备份的将是这一百次的数据变动情况。14.1.2恢复模式前面章节里多次提到过事务日志,每次提到事务日志时,都会说事务日志会记录数据库中每一次的数据变动。事实上并不是所有数据库都需要记录每一次的数据操作。如果每个操作都要记录的话,数据库不但要写数据文件,而且还要写日志文件,在操作大量数据时(如导入数据),会降低菘獾男阅堋TSQLServer2008可以使用“恢复模式”来设置事务日志的操作方法。14.1.3如何备份数据库在了解了什么是数据库备份和恢复之后,并不是可以马上动手备份或恢复数据库,在备份或恢复数据库时,要先考虑几个问题:(1)什么时候备份数据库?备份数据库会占用系统资源,很显然,在很多人都在使用数据库时备份数据不是一个明智的选择。(2)隔多久备份一次数据库?每天数据库里改变的数据有多少?如果一天只有数十条数据改变,却天天备份数据库,这也不是一个明智的选择。(3)用什么方式备份数据库?每次备份数据库都用完整模式,还是先用一次完整模式后再用几次差异备份模式?(4)将数据库备份到哪里?是磁盘中,还是磁带中?(5)一旦数据发生问题,恢复数据要花多少时间?数据能恢复到哪个时间状态?14.1.4数据库备份到哪里在SQLServer2008中,可以将数据库备份到磁盘中或磁带中。如果是备份到磁盘中,可以有两种形式:一种是文件的形式,一种是备份设备的形式。无论是哪种形式,在磁盘中的体现都是文件的形式。14.2在SQLServerManagementStudio中备份数据库使用SQLServerManagementStudio可以备份数据库,包括完整备份、差异备份、事务日志备份以及文件和文件组备份,备份方式大同小异。示例:下面以备份AdventureWorks数据库为例,介绍如何使用SQLServerManagementStudio完整备份数据库。14.3用T-SQL语言备份数据库T-SQL语言里提供了BACKUPDATABASE语句来备份数据库,用该语句可以完成完整、差异、文件和文件组备份。如果要备份事务日志则要用BACKUPLOG语句。虽然BACKUPDATABASE语句可以进行完整、差异、文件和文件组备份,但是在完整备份、差异备份与文件和文件组备份的语法上有一点点出入,下面分别介绍几种类型的备份方法。14.3.1完整备份与差异备份示例:将AdventureWorks数据库备份到名为“AdventureWorksBackup”的备份设备上,其步骤如下:(1)单击“开始|所有程序|MicrosoftSQLServer2008|SQLServerManagementStudio”命令,启动SQLServerManagementStudio工具。在SQLServerManagementStudio工具中,单击“新建查询”按钮,打开一个“新建查询”窗口。(2)在SQLServerManagementStudio工具中,单击“新建查询”按钮,打开一个“新建查询”窗口。(3)建立一个示例数据库,在打开的查询编辑器中输入以下代码:(4)单击“执行”按钮。14.3.2备份文件和文件组示例:将AdventureWorks数据库中的“AdventureWorks_Data”文件备份到名为“New_AdventureWorksBackup”的备份设备上,其步骤如下(1)单击“开始|所有程序|MicrosoftSQLServer2008|SQLServerManagementStudio”命令,启动SQLServerManagementStudio工具。在SQLServerManagementStudio工具中,单击“新建查询”按钮,打开一个“新建查询”窗口。(2)在SQLServerManagementStudio工具中,单击“新建查询”按钮,打开一个“新建查询”窗口。(3)建立一个示例数据库,在打开的查询编辑器中输入以下代码:(4)单击“执行”按钮。14.3.3事务日志备份示例:将AdventureWorks数据库的事务日志备份到名为“New_AdventureWorksBackup”的备份设备上,其代码为:(1)单击“开始|所有程序|MicrosoftSQLServer2008|SQLServerManagementStudio”命令,启动SQLServerManagementStudio工具。在SQLServerManagementStudio工具中,单击“新建查询”按钮,打开一个“新建查询”窗口。(2)在SQLServerManagementStudio工具中,单击“新建查询”按钮,打开一个“新建查询”窗口。(3)建立一个示例数据库,在打开的查询编辑器中输入以下代码:(4)单击“执行”按钮。14.4备份设备管理在前面章节里介绍过怎么样去创建备份设备。当将数据库备份到备份设备之后,要妥善管理好备份设备。备份设备尽量不要与数据库系统放在同一台服务器上,以免硬件发生故障时备份数据也保不住。如果可能的话,可以将备份设备刻录到光盘上。14.4.1查看备份设备的内容由于一个备份设备可以存储多个数据库的备份数据,也可以存储同一个数据库的多次备份的数据,因此,在某些时候(如还原数据库前)会需要查看一下备份设备里的包含有哪些内容。示例:在SQLServerManagementStudio查看备份设备里的内容的步骤如下:(1)启动SQLServerManagementStudio,在“对象资源管理器”窗口里展开“数据库实例|服务器对象”,展开“备份设备”节点。(2)右键单击要查看内容的备份设备名,在弹出的快捷菜单里选择“属性”菜单命令。(3)弹出“备份设备—设备名称”的对话框,在该对话框里选择“介质内容”选项,在该对话框里可以该备份设备里包含的数据库备份数据,如备份时的备份名称、备份类型、备份的数据库、备份时间、过期时间等等。(4)查看完毕后,单击“确定”退出该对话框。14.4.2通过备份设备来备份数据库在上面的章节里介绍了备份数据库的一种方法,该方法是右击数据库名,在弹出的快捷菜单里选择“任务”菜单下的“备份”子菜单命令,然后完成备份数据库的操作。在SQLServer2008里,还可以直接在备份设备上备份数据库其方法步骤参考如下。(1)启动SQLServerManagementStudio,在“对象资源管理器”窗口里展开树型目录“数据库实例|服务器对象”,展开“备份设备”节点。(2)右击要创建数据库备份的备份设备,在弹出的快菜单里选择“备份数据库”。(3)弹出对话框的“目标”区域里已经自动添加了备份设备,这个备份设备就是第(2)步中右键单击备份设备。(4)按照第14.2章节中的操作完成剩下的备份操作。14.4.3验证备份的内容备份数据库的“选项”对话框,可以选择“可靠性”区域中的“完成后验证备份”和“写入介质前检查校验和”两个选项来检查备份后的数据是否有误,避免在恢复数据库时才发现备份的文件有误或无法读取,引起不必要的损失。然而通过BACKUP语句来备份的数据库时,并没有验证备份文件的功能,如果要验证备份文件是否有误,只能用RESTOREVERIFYONLY语句来验证。在SQLServer2008中的RESTOREVERIFYONLY语句功能已经得到了增强,不但可以验证备份集是否完整、整个备份是否可读,还可以对数据执行额外的检查,从而提高发现错误的概率。其目标是尽可能接近实际的还原操作。14.4.4删除备份设备示例:当备份设备不要需要使用时,可以将其删除,在SQLServerManagementStudio里删除备份设备的方法如下:(1)启动SQLServerManagementStudio,在“对象资源管理器”窗口里展开树型目录数据库实例,展开服务器对象,展开“备份设备”节点。(2)右击要删除的备份设备名,在弹出的快捷菜单里选择“删除”菜单命令。(3)弹出“删除对象”对框话,在该对话框里单击“确定”按钮完成操作。14.5在SQLServerManagementStudio中还原数据库不管愿不愿意,一个数据库管理员或多或少都会遇到要还原数据库的操作。有时是因为数据库的软硬件出了故障,有时是因为做了大量的误操作,需要将数据库还原到误操作之前的状态。不过不管是因为什么原因,在还原数据库时都必需要了解还原的方式和一些注意事项。14.5.1还原数据库的方式有几种数据库备份的方式就将会有几种还原数据库的方式:完整备份的还原:差异备份的还原:事务日志备份的还原:文件和文件组备份的还原:14.5.2还原数据库前要注意的事项在还原数据库之前,要注意以下两点:检查备份设备或文件:在还原数据库之前,首先要找到要还原的备份文件或备份设备,并检查备份文件或备份设备里的备份集是否正确无误,如使用前面介绍的“RESTOREVERIFYONLY”语句。查看数据库的使用状态:在还原数据库之前,要先查看数据库是否还有其他人在使用,如果还有其他人正在使用,将无法还原数据库。14.5.3还原数据库备份示例:下面以还原数据库AdventureWorks为例,讲解在SQLServerManagementStudio里还原数据的方法:(1)启动SQLServerManagementStudio,在“对象资源管理器”中展开数据库实例,展开“数据库”目录,右键单击示例数据库AdventureWorks,从弹出的快捷菜单里选择“任务|还原|数据库”菜单命令。(2)弹出“还原数据库”对话框。(3)如果没有其他的需要,设置完第二步后可以单击“确定”按钮进行还原操作,(4)设置完毕后,单击“确定”按钮完成还原操作。14.5.4还原文件和文件组备份示例:还原文件和文件组备份与还原完整备份、差异备份和事务日志备份有点区别:(1)启动SQLServerManagementStudio,在“对象资源管理器”中展开数据库实例,展开“数据库”目录,右键单击示例数据库AdventureWorks,从弹出的快捷菜单里选择“任务|还原|文件和文件组”菜单命令。(2)弹出“还原文件和文件组”对话框。(3)选择完毕后可以单击“确定”按钮完成还原操作,也可以选择“选项”选项项进行进一步设置,其设置与上面介绍的相同。14.5.5从现有的备份创建新的数据库通常数据库设计员都会在本地计算机上设计并调试数据库,在数据库初始化完毕之后再上传到服务器上。在前面曾经提到用可以先将数据库文件分离,然后将其传到服务器上再附加。使用这种方法附加的数据库不能改名。14.6用T-SQL语言还原数据库T-SQL语言里提供了RESTOREDATABASE语句来恢复数据库备份,用该语句可以恢复完整备份、差异备份、文件和文件组备份。如果要还原事务日志备份则还可以用RESTORELOG语句。虽然RESTOREDATABASE语句可以恢复完整备份、差异备份、文件和文件组备份,但是在恢复完整备份、差异备份与文件和文件组备份的语法上有一点点出入,下面分别介绍几种类型备份的还原方法。14.6.1还原完整备份示例:用名为“AdventureWorksBackup”的备份设备来还原AdventureWorks数据库,在本例中,没有使用指定备份设备里的哪一个备份集来还原数据库备份,那么默认使用备份设备里的第一个备份集还原数据库。如果要指定用哪个备份集来还原数据库,则要使用file参数指定。14.6.2还原差异备份还原差异备份的语法与还原完整备份的语法是一样的,只是在还原差异备份时,必须要先还原完整备份再还原差异备份,因此还原差异备份必须要分为两步完成。完整备份与差异备份数据在同一个备份文件或备份设备中,也有可能是在不同的备份文件或备份设备中。如果在同一个备份文件虮阜萆璞钢校虮匦胍file参数来指定备份集。无论是备份集是不是在同一个备份文件(备份设备)中,除了最后一个还原操作,其他所有还原操作都必须要加上NORECOVERY或STANDBY参数。14.6.3还原事务日志备份SQLServer2008中已经将事务日志备份看成和完整备份、差异备份一样的备份集,因此,还原事务日志备份也可以和还原差异备份一样,只要知道它在备份文件或备份设备里是第几个文件集即可。与还原差异备份相同,还原事务日志备份必须要先还原在其之前的完整备份,除了最后一个还原操作,其他所有还原操作都必须要加上NORECOVERY或STANDBY参数。14.6.4还原文件和文件组备份还原文件和文件组备份也可以使用RESTOREDATABASE语句,但是必须要在数据库名与FROM之间加上“FILE”或“FILEGROUP”参数来指定要还原的文件或文件组。通常来说,在还原文件和文件组备份之后,还要再还原其他备份来获得最近的数据库状态。14.6.5将数据库还原到某个时间点有关“时间点”在上面章节里提到过一点点,下面举例详细地介绍怎么将数据库还原到某个时间点。假设一个数据库,在上午8点做过一次完整备份、10点做过一次事务日志备份,现在发现在9点15分时的一次数据更新是错误的,那么能不能将数据恢复到9点14分时的数据库状态,还是只能恢复到10点所做的事务日志备份时的状态呢?事务日志的作用就是记录每一次数据的修改记录,所以从理论上来说,是可以恢复到任何一次操作之前的状态。9点15分时的数据是错误的,那就将其恢复到9点14分的数据吧。14.6.6将文件还原到新位置上使用RESTOREDATABASE语句也可以利用备份文件创建一个新的数据库。示例:用名为“AdventureWorksBackup”的备份设备的第17个备份集来创建一个名为“AdventureWorks_test”的新数据库,

14.7建立自动备份的维护计划既然数据库备份如此重要,作为一个数据库管理员就不得不花大量的时间去给数据库做备份。当一个数据库里数据更新得比较频繁时,那么一天几次备份是必不可少的,如果每次都要数据库管理员手动备份数据库,那将是一个负担不堪的工作任务。14.8本章小结SQLServer2008中的恢复模式分为三种:完整恢复模式、大容量日志恢复模式和简单恢复模式。恢复模式会影响日志的写入方式和恢复方式。SQLServer2008提供了四种备份数据库的方式:完整备份、差异备份、事务日志备份以及文件和文件组备份。备份数据库要充分使用以上不同方式的组合,使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论