44
第第第 第第第第第 第第第 第第第第第

第九章 备份和还原

Embed Size (px)

DESCRIPTION

第九章 备份和还原. 9 . 1 基本概念. 数据库备份是制作数据库结构、对象和数据的贝 , 以便在数据库遭到破坏的时候能够修复数据库。数据库还原指将数据库备份加载到服务器中去。. 9 . 1 . 1 何时需要备份. SQL Server 提供了一套功能强大的数据备份和还原具。数据备份和还原可以用于保护数据库中的关键数据。在系统发生错误的时候,可以利用数据备份来还原数据库中的数据。在下述情况下需要使用数据库的备份还原: · 存储媒体损坏。例如存放数据库的硬盘损坏。 · 用户操作错误。例如非恶意地或恶意地修改或删除数据。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第九章 备份和还原

第九章 备份和还原第九章 备份和还原

Page 2: 第九章 备份和还原

99 .. 1 1 基本概念基本概念 数据库备份是制作数据库结构、对象和数数据库备份是制作数据库结构、对象和数据的贝据的贝 ,,以便在数据库遭到破坏的时候能够以便在数据库遭到破坏的时候能够修复数据库。数据库还原指将数据库备份修复数据库。数据库还原指将数据库备份加载到服务器中去。加载到服务器中去。

Page 3: 第九章 备份和还原

99 .. 11 .. 1 1 何时需要备份何时需要备份 SQL ServerSQL Server提供了一套功能强大的数据备份和还原具。提供了一套功能强大的数据备份和还原具。数据备份和还原可以用于保护数据库中的关键数据。在数据备份和还原可以用于保护数据库中的关键数据。在系统发生错误的时候,可以利用数据备份来还原数据库系统发生错误的时候,可以利用数据备份来还原数据库中的数据。在下述情况下需要使用数据库的备份还原:中的数据。在下述情况下需要使用数据库的备份还原:

··存储媒体损坏。例如存放数据库的硬盘损坏。存储媒体损坏。例如存放数据库的硬盘损坏。 ··用户操作错误。例如非恶意地或恶意地修改或删除数用户操作错误。例如非恶意地或恶意地修改或删除数据。据。

··整个服务器崩溃。例如操作系统被破坏,造成计算机整个服务器崩溃。例如操作系统被破坏,造成计算机无法启动。无法启动。

··需要在不同的服务器之间移动数据库时。把一个服务需要在不同的服务器之间移动数据库时。把一个服务器上的某个数据库备份下来,然后还原到另一个服务器器上的某个数据库备份下来,然后还原到另一个服务器中去。中去。

Page 4: 第九章 备份和还原

99 .. 11 .. 2 SQL Server 20002 SQL Server 2000 的数的数据库备份和还原的方法 据库备份和还原的方法

SQL Server 2000SQL Server 2000的数据库备份和还原可以创建数据的数据库备份和还原可以创建数据库拷贝,该拷贝存放到安全的地方,当服务器崩溃或库拷贝,该拷贝存放到安全的地方,当服务器崩溃或数据库被损坏时,该拷贝就可以用于还原数据库。数据库被损坏时,该拷贝就可以用于还原数据库。

数据库备份的方法数据库备份的方法 在在 SQL Server2000SQL Server2000中,备份数据库有以下四种方法:中,备份数据库有以下四种方法: ··全库备份。即制作数据库中所有内容的副本。它在全库备份。即制作数据库中所有内容的副本。它在备份过程中需要花费的时间和空间最多,不宜频繁进备份过程中需要花费的时间和空间最多,不宜频繁进行。恢复时,仅需要恢复最后一次全库备份即可。该行。恢复时,仅需要恢复最后一次全库备份即可。该备份以后的修改都将丢失。备份以后的修改都将丢失。

··差异备份。即只备份最后一次全库备份后被修改的差异备份。即只备份最后一次全库备份后被修改的数据页。备份的时间和空间较少。恢复时,先恢复最数据页。备份的时间和空间较少。恢复时,先恢复最后一次全库备份,再恢复最后一次差异备份。后一次全库备份,再恢复最后一次差异备份。

Page 5: 第九章 备份和还原

··事务日志备份。即只备份最后一次日志备份后所事务日志备份。即只备份最后一次日志备份后所有的事务日志记录下来。备份所用的时间和空间更有的事务日志记录下来。备份所用的时间和空间更少。利用日志备份进行恢复时,可以指定恢复到某少。利用日志备份进行恢复时,可以指定恢复到某一个事务,这是全库备份和差异备份所不能做到的。一个事务,这是全库备份和差异备份所不能做到的。但利用日志备份进行恢复时,需要重新执行日志记但利用日志备份进行恢复时,需要重新执行日志记录中的修改命令来恢复数据库中的数据,所以通常录中的修改命令来恢复数据库中的数据,所以通常恢复的时间较长。建议每周进行一次全库备份,每恢复的时间较长。建议每周进行一次全库备份,每天进行一次差异备份,每小时执行一次日志备份,天进行一次差异备份,每小时执行一次日志备份,再恢复最后一次差异备份,再顺次恢复最后一次差再恢复最后一次差异备份,再顺次恢复最后一次差异备份以后进行所有事务日志备份。异备份以后进行所有事务日志备份。

··文件或文件组备份。即备份某个数据库文件或数文件或文件组备份。即备份某个数据库文件或数据库文件组。必须与事务日志备份结合才有意义。据库文件组。必须与事务日志备份结合才有意义。例如,某数据库中有两个数据文件,一次仅备份一例如,某数据库中有两个数据文件,一次仅备份一个文件,而且在每个数据文件备份后,都要进行日个文件,而且在每个数据文件备份后,都要进行日志备份。在恢复时,使用事务日志使所有的数据文志备份。在恢复时,使用事务日志使所有的数据文件恢复到同一个时间点。件恢复到同一个时间点。

Page 6: 第九章 备份和还原

故障还原模型故障还原模型 在在 SQL Server2000SQL Server2000中,有以下三种故障还原中,有以下三种故障还原模型:模型:

··完全模型。任何对数据库的修改操作都记录到完全模型。任何对数据库的修改操作都记录到事务日志文件中。事务日志文件中。

··大容量日志记录模型。除对日志空间影响大的大容量日志记录模型。除对日志空间影响大的操作(如操作(如 bull insertbull insert)外,其他修改操作都记)外,其他修改操作都记录到事务日志文件中。录到事务日志文件中。

··简单模型。所有的修改操作都不记录到事务日简单模型。所有的修改操作都不记录到事务日志文件中。在该模式下,不能进行事务日志备志文件中。在该模式下,不能进行事务日志备份和文件份和文件 //文件组备份。在数据库属性窗口“选文件组备份。在数据库属性窗口“选项”选项卡中,可以选择它的故障还原模式。项”选项卡中,可以选择它的故障还原模式。

例如,对某数据库的操作过程中在不同时刻对例如,对某数据库的操作过程中在不同时刻对某数据库进行了不同的操作某数据库进行了不同的操作 ..

Page 7: 第九章 备份和还原

99 .. 22 备份数据库备份数据库 备份数据库可以使用备份向导或企业管理器来完备份数据库可以使用备份向导或企业管理器来完成,也可以通过成,也可以通过 Transact-SQLTransact-SQL语句来实现。下语句来实现。下面以示例数据库面以示例数据库 NorthwindNorthwind来例来介绍备份数据来例来介绍备份数据库的方法和步骤。库的方法和步骤。

9.2.19.2.1使用备份向导备份数据库使用备份向导备份数据库 步骤步骤 在企业管理器中展开服务器组,然后展开一个服在企业管理器中展开服务器组,然后展开一个服务器。务器。

展开“数据库”文件夹,然后单击要备份的数据展开“数据库”文件夹,然后单击要备份的数据库,例如库,例如 NorthwindNorthwind。。

从“工具”选单中选择“向导”命令,以打开如从“工具”选单中选择“向导”命令,以打开如图图 9.19.1所示的“选择向导”对话框。所示的“选择向导”对话框。

Page 8: 第九章 备份和还原
Page 9: 第九章 备份和还原

单击“管理”节点,选择“备份向导”选单击“管理”节点,选择“备份向导”选项,出现“欢迎使用创建数据库备份向项,出现“欢迎使用创建数据库备份向导”画面,然后单击“下一步”按钮,出导”画面,然后单击“下一步”按钮,出现如图现如图 9.29.2 所示的对话框。所示的对话框。

Page 10: 第九章 备份和还原

选择所备份的数据库(例如选择所备份的数据库(例如 NorthwinNorthwindd ),单击“下一步”按钮,出现“键入),单击“下一步”按钮,出现“键入备份的名称和描述”对话框,在该对话框备份的名称和描述”对话框,在该对话框中输入备份的名称和描述信息,然后单击中输入备份的名称和描述信息,然后单击“下一步”按钮,出现如图“下一步”按钮,出现如图 9.39.3 所示的对所示的对话框。话框。

Page 11: 第九章 备份和还原

选择下列备份方法之一。选择下列备份方法之一。 · “· “数据库备份”:对整个数据库的数据进行备数据库备份”:对整个数据库的数据进行备份。份。

· “· “差异数据库”:对新的或更改的数据库进行差异数据库”:对新的或更改的数据库进行备份。备份。

· “· “事务日志”:对数据库的所有更改的命令进事务日志”:对数据库的所有更改的命令进行备份。行备份。

选择一种备份方法之后,单击“下一步”按钮,选择一种备份方法之后,单击“下一步”按钮,出现如图出现如图 9.49.4所示的对话框。所示的对话框。

Page 12: 第九章 备份和还原

选择备份目的和操作。选择“备份设备”选择备份目的和操作。选择“备份设备”选项为“文件”方式,其中文件名和路径选项为“文件”方式,其中文件名和路径自定义:如果要将此次备份追加到原有备自定义:如果要将此次备份追加到原有备份数据的后面,可以选择“属性”选项中份数据的后面,可以选择“属性”选项中的“追加到备份媒体”选项;如果要用此的“追加到备份媒体”选项;如果要用此次备份的数据覆盖原有备份数据,可以选次备份的数据覆盖原有备份数据,可以选择“重写现有媒体”选项。单击“下一择“重写现有媒体”选项。单击“下一步”按钮,出现如图步”按钮,出现如图 9.59.5 所示的对话框。所示的对话框。

Page 13: 第九章 备份和还原

单击“更改”按钮,确定备份的计划,然单击“更改”按钮,确定备份的计划,然后单击“下一步”按钮,出现备份向导的后单击“下一步”按钮,出现备份向导的“完成”对话框,在核对话框中显示刚才“完成”对话框,在核对话框中显示刚才所设置的各属性,单击“完成”按钮,则所设置的各属性,单击“完成”按钮,则出现备份成功的对话框。此时,用向导完出现备份成功的对话框。此时,用向导完成了数据库的备份,并在相应的文件夹内成了数据库的备份,并在相应的文件夹内产生了一个产生了一个 .BAK.BAK 备份文件。备份文件。

Page 14: 第九章 备份和还原

9.2.2 9.2.2 使用企业管理器备份数据使用企业管理器备份数据库库

下列以示例数据库下列以示例数据库 NorthwindNorthwind 为例介绍如为例介绍如何在企业管理器中备份数据库。何在企业管理器中备份数据库。

步骤步骤 (1)(1)在企业管理器中,展开服务器组,然后在企业管理器中,展开服务器组,然后展开一个服务器。展开一个服务器。

Page 15: 第九章 备份和还原

(( 22 )展开“数据库”文件夹,单击要备)展开“数据库”文件夹,单击要备份的数据库,然后选择“操作→所有任务份的数据库,然后选择“操作→所有任务→备份数据库”命令,如图→备份数据库”命令,如图 9.69.6 所示。所示。

Page 16: 第九章 备份和还原

(( 33 )当出现如图)当出现如图 9.79.7 所示的“所示的“ SQL ServSQL Serverer 备份”对话框时,在“名称”框中输入备份”对话框时,在“名称”框中输入数据库备份集的名称。如果需要,也可以数据库备份集的名称。如果需要,也可以在“描述”框中输入一些说明文字,描述在“描述”框中输入一些说明文字,描述数据库备份集。数据库备份集。

Page 17: 第九章 备份和还原

在“备份”区域中选项备份的方法:在“备份”区域中选项备份的方法: · · 若要执行完整数据库备份,则选择“数据若要执行完整数据库备份,则选择“数据库一完全”选项。库一完全”选项。

· · 若要执行差异数据库备份,即仅备份自上若要执行差异数据库备份,即仅备份自上次完整数据库备份以后对数据库数据所修次完整数据库备份以后对数据库数据所修改的数据页,则选择“数据库一差异”选改的数据页,则选择“数据库一差异”选项。项。

· · 若要备份事务日志,则选择“事务日志”若要备份事务日志,则选择“事务日志”选项。选项。

· · 若只想备份数据库中的某个文件和文件组,若只想备份数据库中的某个文件和文件组,则单击浏览按钮,以选择相应的文件或文则单击浏览按钮,以选择相应的文件或文件组。件组。

Page 18: 第九章 备份和还原

指定备份的目的。在“目的”区域中单击指定备份的目的。在“目的”区域中单击“添加”按钮,并在如图“添加”按钮,并在如图 9.89.8 所示的“选择所示的“选择备份目的”对话框中指定一个备份文件或备份目的”对话框中指定一个备份文件或备份设备,使止出现在图备份设备,使止出现在图 9.79.7 所示的对话框所示的对话框中“备份到”下边的列表框中。在一次备中“备份到”下边的列表框中。在一次备份操作中可以指定多个目标设备或文件,份操作中可以指定多个目标设备或文件,这样可以将一个数据库备份到多个文件或这样可以将一个数据库备份到多个文件或设备中。设备中。

Page 19: 第九章 备份和还原

在“重写”区域中选择备份方式:在“重写”区域中选择备份方式: · · 若要将此次备份追加在原有备份数据的后若要将此次备份追加在原有备份数据的后面,则选择“追加到媒体”选项。面,则选择“追加到媒体”选项。

· · 若要将此次备份的数据覆盖原有备份数据,若要将此次备份的数据覆盖原有备份数据,则选择“重写现有媒体”选项。则选择“重写现有媒体”选项。

(( 77 )在“调度”区域中制定备份日程。)在“调度”区域中制定备份日程。如果希望按照一定周期对数据库进行备份,如果希望按照一定周期对数据库进行备份,可以选取“调度”复选框,然后单击按钮可以选取“调度”复选框,然后单击按钮并在如图并在如图 9.99.9 所示的“编辑调度”对话框中所示的“编辑调度”对话框中安排备份数据库的执行时间。安排备份数据库的执行时间。

Page 20: 第九章 备份和还原

返回到“数据库备份”对话框以后,单击返回到“数据库备份”对话框以后,单击“确定”按钮,开始执行备份操作,此时“确定”按钮,开始执行备份操作,此时出现相应的提示信息。出现相应的提示信息。

(( 99 )当看到“备份操作已顺利完成”的)当看到“备份操作已顺利完成”的提示信息时,单击“确定”按钮,结束备提示信息时,单击“确定”按钮,结束备份操作。份操作。

Page 21: 第九章 备份和还原

9.2.39.2.3使用使用 Transact-SQLTransact-SQL 语句备份数语句备份数据库据库

在查询分析器中,可以通过执行有关的系在查询分析器中,可以通过执行有关的系统存储过程的语句来完成数据库的备份操统存储过程的语句来完成数据库的备份操作,这个过程通常包含以下两个步骤。作,这个过程通常包含以下两个步骤。

用系统存储过程用系统存储过程 sp_addumpdevicesp_addumpdevice 创建创建一个备份设备一个备份设备

sp_addumpdevicesp_addumpdevice 存储过程常用的语法存储过程常用的语法格式为:格式为:

[EXECUTE] sp_addumpdevice‘[EXECUTE] sp_addumpdevice‘ 设设备类型’,‘逻辑名称’,‘物理名称’备类型’,‘逻辑名称’,‘物理名称’

Page 22: 第九章 备份和还原

第一个参数用于指定备份设备的类型,备份设备第一个参数用于指定备份设备的类型,备份设备即用来存放备份数据的物理设备,包括磁盘、磁即用来存放备份数据的物理设备,包括磁盘、磁带和命名管道,分别用‘带和命名管道,分别用‘ disk’disk’、‘、‘ pipe’pipe’和和‘‘ tape’tape’ 表示。表示。

当建立一个备份设备时,要给该设备分配一个逻当建立一个备份设备时,要给该设备分配一个逻辑备份名称和一个物理备份名称,物理备份名称辑备份名称和一个物理备份名称,物理备份名称是计算机操作系统所能识别的该设备所使用的名是计算机操作系统所能识别的该设备所使用的名字,如果是一个磁盘设备,则物理名称是设备存字,如果是一个磁盘设备,则物理名称是设备存储在本地或网络上的物理名称,例如“储在本地或网络上的物理名称,例如“ E:\DatabE:\Databackup\Market.bat”ackup\Market.bat” ;逻辑名称是物理设备名;逻辑名称是物理设备名称的一个别名,用于称的一个别名,用于 SQL ServerSQL Server管理备份设备,管理备份设备,逻辑名称存储在逻辑名称存储在 SQL ServerSQL Server的系统表的系统表 sysdevicesysdevicess中,使用逻辑名称的好处是比物理名称简单好记。中,使用逻辑名称的好处是比物理名称简单好记。

Page 23: 第九章 备份和还原

用用 BACKUPBACKUP语句执行备份操作语句执行备份操作 使用使用 BACKUPBACKUP语句可以对数据库进行全库备份、语句可以对数据库进行全库备份、差异备份、日志备份或文件和文件组备份。差异备份、日志备份或文件和文件组备份。

· · 全库备份。即制作数据库中所有内容的一个副全库备份。即制作数据库中所有内容的一个副本,从一个全库备份中就可以恢复整个数据库。本,从一个全库备份中就可以恢复整个数据库。其语法格式为:其语法格式为:

BACKUP DATABASEBACKUP DATABASE数据库名 数据库名 TO TO 备份设备备份设备名名

[WITH[NAME=‘[WITH[NAME=‘ 备份的名称’备份的名称’ ][][ ,, INIT INIT | NOINIT]]| NOINIT]]

在上述语法格式中,备份设备名采用“备份设备在上述语法格式中,备份设备名采用“备份设备类型类型 == 设备名称”的形式;设备名称”的形式; INITINIT 参数表示新备参数表示新备份的数据覆盖当前备份设备上的每一项内容,即份的数据覆盖当前备份设备上的每一项内容,即原来在此设备上的数据信息都将不存在了;原来在此设备上的数据信息都将不存在了; NOINOINITNIT 参数表示新备份的数据添加到备份设备上已参数表示新备份的数据添加到备份设备上已有内容的后面有内容的后面

Page 24: 第九章 备份和还原

· · 差异备份。即从最近一次全库备份结束以差异备份。即从最近一次全库备份结束以来所有改变的数据备份到数据库。当数据来所有改变的数据备份到数据库。当数据库从上次备份以来,数据发生很少的变化库从上次备份以来,数据发生很少的变化时适合使用差异备份。其语法格式如下:时适合使用差异备份。其语法格式如下:

BACKUP DATABASEBACKUP DATABASE 数据库名 数据库名 TO TO 备备份设备名份设备名

WITH DIFFERENTIAL[WITH DIFFERENTIAL[ ,, NAME=NAME=‘‘ 设备的名称’设备的名称’ ][][,, INIT|NOINIT]INIT|NOINIT]

在上述语法格式中,在上述语法格式中, DIFFERENTIALDIFFERENTIAL 子子句子的作用是,通过它可以指定只对在创句子的作用是,通过它可以指定只对在创建最新的数据库备份后数据库中发生变化建最新的数据库备份后数据库中发生变化的部分进行备份。的部分进行备份。

Page 25: 第九章 备份和还原

· · 日志备份。即从最近一次日志备份以来所日志备份。即从最近一次日志备份以来所有事物日志备份到备份设备。通常情况下有事物日志备份到备份设备。通常情况下日期备份经常与全库备份和差异备份结合日期备份经常与全库备份和差异备份结合使用,其语法格式如下:使用,其语法格式如下:

BACKUP LOG BACKUP LOG 数据库名 数据库名 TO TO 备份设备备份设备名名

[WITH[NAME=‘[WITH[NAME=‘ 备份的名称’备份的名称’ ][][,,INT|NOINIT]]INT|NOINIT]]

这个语法格式中的参数与全库备份格式中这个语法格式中的参数与全库备份格式中的参数相同。的参数相同。

Page 26: 第九章 备份和还原

· · 文件与文件组备份。当一个数据为很大时,对文件与文件组备份。当一个数据为很大时,对整个数据库进行备份可能花费很多时间,这时可整个数据库进行备份可能花费很多时间,这时可以采用文件和文件组备份方式,即对数据库中的以采用文件和文件组备份方式,即对数据库中的部分文件或文件组进行备份。其语法如下部分文件或文件组进行备份。其语法如下

BACKUP DATABASE BACKUP DATABASE 数据库名数据库名 FILE=‘FILE=‘文件的逻辑名称’文件的逻辑名称’ | FILEGROUP| FILEGROUP

=‘=‘文件组的逻辑名称’文件组的逻辑名称’ TOTO备份设备名备份设备名 [WITH[NAME=‘[WITH[NAME=‘备份的名称’备份的名称’ ][][,, INTINT

|NOINIT]]|NOINIT]] 使用上述语法格式备份数据库时,如果备份的是使用上述语法格式备份数据库时,如果备份的是文件,则写做“文件,则写做“ FILE=‘FILE=‘文件的逻辑名称’”的文件的逻辑名称’”的方式;如果备份的是文件组,则写做“方式;如果备份的是文件组,则写做“ FILEGRFILEGROUP=‘OUP=‘文件组的逻辑名称’”的方式。文件组的逻辑名称’”的方式。

Page 27: 第九章 备份和还原

9.39.3 还原数据库还原数据库

还原数据库就是把原来备份的数据恢复到还原数据库就是把原来备份的数据恢复到备份前的状态。当还原数据库时,备份前的状态。当还原数据库时, SQL SeSQL Serverrver 会自动将备份文件中的数据库全部拷会自动将备份文件中的数据库全部拷贝到数据库,并回滚任何未完成的事务,贝到数据库,并回滚任何未完成的事务,以保证数据库中数据的一致性。以保证数据库中数据的一致性。

Page 28: 第九章 备份和还原

9.3.1 9.3.1 使用企业管理器还原数据使用企业管理器还原数据库库

下面使用企业管理器把前面章节中备份的数据库下面使用企业管理器把前面章节中备份的数据库文件文件 NorthwindNorthwind的备份文件“的备份文件“ NorthwindNorthwind备份备份 ..BAK”BAK”恢复到原有状态。恢复到原有状态。

步骤步骤 (( 11)在企业管理器中展开服务器组,然后展开)在企业管理器中展开服务器组,然后展开一个服务器。一个服务器。

(( 22)用鼠标右键单击“数据库”,在弹出的快)用鼠标右键单击“数据库”,在弹出的快捷选单中选择“所有任务”选项,再选择“还原捷选单中选择“所有任务”选项,再选择“还原数据库”选项,打开如图数据库”选项,打开如图 9.109.10所示的对话框。所示的对话框。

Page 29: 第九章 备份和还原

(( 33 )在“还原为数据库”下拉列表中选)在“还原为数据库”下拉列表中选择要还原的目标数据库,该数据库可以是择要还原的目标数据库,该数据库可以是不同于备份数据库的另一个数据库,即可不同于备份数据库的另一个数据库,即可以将一个数据库的备份还原到另一个数据以将一个数据库的备份还原到另一个数据库中。 库中。

Page 30: 第九章 备份和还原

可以从下拉列表中选择已存在的数据库,也可以可以从下拉列表中选择已存在的数据库,也可以输入一个新的数据库名称,输入一个新的数据库名称, SQL Server2000SQL Server2000将将自动新建一个数据库,并将数据库备份还原到新自动新建一个数据库,并将数据库备份还原到新建的数据库中。建的数据库中。

(( 44)选择一种还原的方式,可以是“数据库”、)选择一种还原的方式,可以是“数据库”、“文件组或文件”或“从设备”方式。选择第一“文件组或文件”或“从设备”方式。选择第一种方式可以很方便地还原数据库,但这种当时要种方式可以很方便地还原数据库,但这种当时要求要还原的备份必须在求要还原的备份必须在 msdbmsdb数据库中保存了备数据库中保存了备份历史记录,在其他服务器上创建的备份在份历史记录,在其他服务器上创建的备份在 msbmsbdd数据库中没有记录,则此时将一个服务器上做数据库中没有记录,则此时将一个服务器上做制作的数据库备份还原到另一个服务器上时,不制作的数据库备份还原到另一个服务器上时,不能使用数据库的还原方式,而只能使用备份设备能使用数据库的还原方式,而只能使用备份设备还原。还原。

Page 31: 第九章 备份和还原

(( 55)当选择“数据库”方式时,在“参数”栏)当选择“数据库”方式时,在“参数”栏的“显示数据库备份”下拉列表框中选择要还原的“显示数据库备份”下拉列表框中选择要还原的数据库备份。在“还要还原的第一个备份”下的数据库备份。在“还要还原的第一个备份”下拉列表框中列出了要还原的数据库在拉列表框中列出了要还原的数据库在 msdbmsdb中极中极力的所有备份历史,从中选择在某一日期下备份力的所有备份历史,从中选择在某一日期下备份的数据库备份文件。的数据库备份文件。

(( 66)在“常规”选项卡的下部。显示了一个备)在“常规”选项卡的下部。显示了一个备份的列表,表中列出了从“要还原的第一个备份的列表,表中列出了从“要还原的第一个备份”开始的对该数据库进行的所有备份,对每个份”开始的对该数据库进行的所有备份,对每个备份都显示了该备份的类型、备份的时间、大小、备份都显示了该备份的类型、备份的时间、大小、备份的物理名称等信息备份的物理名称等信息。。用户可以从中选择所要用户可以从中选择所要还原的备份,方法是选中备份前面的“还原”复还原的备份,方法是选中备份前面的“还原”复选框。默认状态下,选框。默认状态下, SQL ServerSQL Server 会为用户选择会为用户选择最新的全库备份、最后一次差异备份以及最后一最新的全库备份、最后一次差异备份以及最后一次差异备份之后进行的所有日志备份。 次差异备份之后进行的所有日志备份。

Page 32: 第九章 备份和还原

(( 77)如果在上一步中选择了日志备份,那么可)如果在上一步中选择了日志备份,那么可以选中“时点还原”复选框,指定还原在某一时以选中“时点还原”复选框,指定还原在某一时间以前的事务日志。间以前的事务日志。

(( 88)在“选项”选项卡中设置还原的选项,如)在“选项”选项卡中设置还原的选项,如图图 9.119.11所示。“将数据库文件还原为”选项列表所示。“将数据库文件还原为”选项列表中给出了要还原的数据库文件的原文件和将要还中给出了要还原的数据库文件的原文件和将要还原成的文件名,在默认状态下,将要还原成的文原成的文件名,在默认状态下,将要还原成的文件名与原文件名相同,用户可以将其改为其他的件名与原文件名相同,用户可以将其改为其他的名字。名字。

Page 33: 第九章 备份和还原

(( 99 )在“恢复完成状态”选项中选择下)在“恢复完成状态”选项中选择下列单选按钮之一。列单选按钮之一。

· · 选择第一个按钮,数据库恢复完成后数据选择第一个按钮,数据库恢复完成后数据库能继续运行,但无法还原其他事务日志。库能继续运行,但无法还原其他事务日志。

· · 选择第二个按钮,数据库恢复完成后数据选择第二个按钮,数据库恢复完成后数据库不能再运行,但能还原其他事务日志。库不能再运行,但能还原其他事务日志。

· · 选择第三个按钮,数据库恢复完成后数据选择第三个按钮,数据库恢复完成后数据库自动为只读方式,不能对其进行修改,库自动为只读方式,不能对其进行修改,但只能还原其他事务日志。但只能还原其他事务日志。

Page 34: 第九章 备份和还原

(( 1010 )单击“确定”按钮,开始还原操作。)单击“确定”按钮,开始还原操作。 如果在如图如果在如图 9.109.10 所示的对话框中选择的还所示的对话框中选择的还原类型是“从设备”,则会出现如图原类型是“从设备”,则会出现如图 9.129.12所示的对话框。所示的对话框。

Page 35: 第九章 备份和还原

单击“选择设备”按钮,然后在如图单击“选择设备”按钮,然后在如图 9.139.13所示的对话框中单击“添加”按钮,选择所示的对话框中单击“添加”按钮,选择要还原的备份文件,再单击“确定”按钮,要还原的备份文件,再单击“确定”按钮,即可开始还原数据库。即可开始还原数据库。

Page 36: 第九章 备份和还原

9.3.29.3.2使用使用 Transact-SQLTransact-SQL 语句还原数语句还原数据库据库

11 .恢复整个数据库.恢复整个数据库 恢复整个数据库时,恢复整个数据库时, RESTORERESTORE 语句的语法语句的语法

格式如下:格式如下: RESTORE DATABASE RESTORE DATABASE 数据库名数据库名 FROMFROM备份设备名备份设备名

[WITH[FILE=n][[WITH[FILE=n][ ,, NORECOVERY|RNORECOVERY|RECOVERY][ECOVERY][ ,, REPLACE]]REPLACE]]

在上述语法格式中在上述语法格式中 FILE=nFILE=n 指出从设备上的第指出从设备上的第几个备份中恢复。例如,数据库在同一备份设几个备份中恢复。例如,数据库在同一备份设备上作了两次备份,若恢复第一个备份时使用备上作了两次备份,若恢复第一个备份时使用““ FILE=1”FILE=1” 选项;若恢复第二个备份时使用选项;若恢复第二个备份时使用““ FILE=2”FILE=2” 选项。选项。

Page 37: 第九章 备份和还原

RECOVERYRECOVERY指定在数据库恢复完成后指定在数据库恢复完成后 SQL ServSQL Serverer 回滚被恢复的数据库中所有未完成的事务,以回滚被恢复的数据库中所有未完成的事务,以保持数据库的一致性。在恢复后,用户就可以访保持数据库的一致性。在恢复后,用户就可以访问数据库了。所以问数据库了。所以 RECOVERYRECOVERY选项用于最后一选项用于最后一个备份的恢复。如果使用个备份的恢复。如果使用 NORECOVERYNORECOVERY选项,选项,那么那么 SQL ServerSQL Server不回滚所有未完成事务,在恢不回滚所有未完成事务,在恢复结束后,用户不能访问数据库。所以当不是对复结束后,用户不能访问数据库。所以当不是对要恢复的最后一个备份做恢复时,应使用要恢复的最后一个备份做恢复时,应使用 NORENORECOVERYCOVERY选项。例如,要恢复一个全库备份、一选项。例如,要恢复一个全库备份、一个差异备份和一个日志备份,那么应先用个差异备份和一个日志备份,那么应先用 NORENORECOVERYCOVERY选项恢复全库备份和差异备份,最后用选项恢复全库备份和差异备份,最后用RECOVERYRECOVERY选项恢复日志备份。默认选项为选项恢复日志备份。默认选项为 RERECOVERYCOVERY。。

Page 38: 第九章 备份和还原

REPLACEREPLACE指明指明 SQL ServerSQL Server创建一个新的数据创建一个新的数据库,并将备份恢复到这个新数据库,如果服务器库,并将备份恢复到这个新数据库,如果服务器上已经存在一个同名的数据库,则原来的数据库上已经存在一个同名的数据库,则原来的数据库被删除。被删除。

从全库备份中恢复数据和从差异备份中恢复数据从全库备份中恢复数据和从差异备份中恢复数据都使用上述语法格式。都使用上述语法格式。

恢复事务日志恢复事务日志 恢复事务日志所使用的语法格式如下:恢复事务日志所使用的语法格式如下: RESTORE LOGRESTORE LOG数据库名数据库名 FROMFROM备份设备名备份设备名 [WITH[FILE=N][[WITH[FILE=N][,, NORECOVERY|RECNORECOVERY|REC

OVERY]]OVERY]] 在上述语法格式中,选项在上述语法格式中,选项 [FILE=N][FILE=N],, [NOREC[NOREC

OVERY|RECOVERY]OVERY|RECOVERY]的含义与恢复整个数据库的含义与恢复整个数据库语法格式中的选项意义相同。语法格式中的选项意义相同。

Page 39: 第九章 备份和还原

恢复部分数据库恢复部分数据库 SQL Server2000SQL Server2000 提供了恢复部分数据库提供了恢复部分数据库的功能,可以将某一部分的备份恢复到相的功能,可以将某一部分的备份恢复到相应的数据库文件中。例如,误删除了一个应的数据库文件中。例如,误删除了一个数据库中的某个表,可以只恢复包含该表数据库中的某个表,可以只恢复包含该表的那一部分数据。部分恢复操作是以数据的那一部分数据。部分恢复操作是以数据库文件还是以数据库文件组为单位工作,库文件还是以数据库文件组为单位工作,取决于备份时以文件为单位还是以文件组取决于备份时以文件为单位还是以文件组为单位,主文件和文件组总是需要被恢复为单位,主文件和文件组总是需要被恢复另外还要恢复指定的文件和它对应的文件另外还要恢复指定的文件和它对应的文件组。组。

Page 40: 第九章 备份和还原

从整个数据库的备份中指定只恢复某几个文件,从整个数据库的备份中指定只恢复某几个文件,所以语法格式如下:所以语法格式如下:

RESTORE DATABASE RESTORE DATABASE 数据库名 数据库名 FILE=FILE=文文件名 件名 | FILEGROUP=| FILEGROUP=文件组名文件组名 FROMFROM备份设备备份设备名名

[WITH PARTIAN [[WITH PARTIAN [,, FILE=n][FILE=n][,, NORENORECOVERY][COVERY][,, REPLACE]]REPLACE]]

其中其中 PARTIALPARTIAL 表示此次恢复只恢复数据库的一表示此次恢复只恢复数据库的一部分。选项部分。选项 FILE=‘FILE=‘文件组’指定要恢复的数据文件组’指定要恢复的数据库文件或文件组的名称,采用“库文件或文件组的名称,采用“ FILE=FILE=文件名”文件名”或“或“ FILEGROUP=FILEGROUP=文件组”的形式。文件组”的形式。 NORECONORECOVERYVERY、、 REPLACEREPLACE的含义与前面相同。的含义与前面相同。

Page 41: 第九章 备份和还原

9.49.4 直接复制文件的备份和还直接复制文件的备份和还原原

数据库的备份和还原,除了在企业管理器数据库的备份和还原,除了在企业管理器中进行或使用中进行或使用 Transact-SQLTransact-SQL 语句完成之语句完成之外,还有直接复制拷贝文件的方法。在外,还有直接复制拷贝文件的方法。在 SQSQL ServerL Server 中与一个数据库相对应的数据文中与一个数据库相对应的数据文件(件( .mdf.mdf )和日志文件()和日志文件( .ldf.ldf )都是)都是WiWindowsndows 系统中的普通磁盘文件,用普通的系统中的普通磁盘文件,用普通的方法直接进行文件复制操作就能够达到备方法直接进行文件复制操作就能够达到备份数据库的目的。 份数据库的目的。

Page 42: 第九章 备份和还原

不过,复制的数据库文件并不会自动地连接到不过,复制的数据库文件并不会自动地连接到 SQSQL Server2000L Server2000系统中,还必须通过执行系统存储系统中,还必须通过执行系统存储过程过程 sp_attach_dbsp_attach_db对所有制作的数据库副本进对所有制作的数据库副本进行还原,也就是将数据库附加到服务器上,行还原,也就是将数据库附加到服务器上,

系统存储过程系统存储过程 sp_attach_dbsp_attach_db的语法格式为:的语法格式为: [EXECUTE] sp_attach_db‘[EXECUTE] sp_attach_db‘数据库名称’,数据库名称’,

‘文件名’‘文件名’ [,…16][,…16] 在上述语法格式中,数据库名称为要连接到在上述语法格式中,数据库名称为要连接到 SQL SQL

ServerServer中的数据库名,该名称必须是唯一的,如中的数据库名,该名称必须是唯一的,如果指定的数据库已经存在,应当予以删除或者另果指定的数据库已经存在,应当予以删除或者另行指定一个数据库名;文件名为包含路径在内的行指定一个数据库名;文件名为包含路径在内的数据库文件名,可以是主要文件(数据库文件名,可以是主要文件( .mdf.mdf)、非)、非主要文件(主要文件( .ndf.ndf)和事务日志文件()和事务日志文件( .ldf.ldf)) ,,最最多可以指定多可以指定 1616个文件名。 个文件名。

Page 43: 第九章 备份和还原

【例【例 99 .. 88 】】 SQL Server2000SQL Server2000中提供了一个示中提供了一个示例数据库例数据库 NorthwindNorthwind,下面以该数据库为例,,下面以该数据库为例,说明如何使用系统存储过程说明如何使用系统存储过程 sp_attach_dbsp_attach_db将数将数据库附加到服务器中。据库附加到服务器中。

步骤步骤 (( 11)打开)打开WindowsWindows 资源管理器,选取于资源管理器,选取于 SQL SQL

Server2000Server2000示例数据库示例数据库 NorthwindNorthwind 相关的两个相关的两个文件,即主要数据库文件文件,即主要数据库文件 Northwind.mdfNorthwind.mdf和事和事务日志文件务日志文件 Northwind.ldfNorthwind.ldf,然后在“编辑”选,然后在“编辑”选单中选择“复制”命令。单中选择“复制”命令。

(( 22)在本地硬盘或具有写权限的网络盘上选择)在本地硬盘或具有写权限的网络盘上选择一个目标文件夹,并在“编辑”选单中选择“粘一个目标文件夹,并在“编辑”选单中选择“粘贴”命令,执行文件复制操作,将上一步中所选贴”命令,执行文件复制操作,将上一步中所选取的两个文件复制到目标文件夹中,如取的两个文件复制到目标文件夹中,如 E:\DatabE:\Databackupackup。如果因源文件正在使用而无法复制,可。如果因源文件正在使用而无法复制,可以首先停止以首先停止 SQL ServerSQL Server服务,等完成文件复制服务,等完成文件复制操作以后重新启动该服务。操作以后重新启动该服务。

Page 44: 第九章 备份和还原

(( 33)在查询分析器中,输入以下语句:)在查询分析器中,输入以下语句: EXECUT sp_attach_db ‘Northwind’EXECUT sp_attach_db ‘Northwind’ ,,

‘‘ E:\Databackup\Northwind.mdf’E:\Databackup\Northwind.mdf’,‘,‘ E:\E:\Databackup\Northwind.ldf’Databackup\Northwind.ldf’

执行上述语句之后,此时可以在查询分析器中看执行上述语句之后,此时可以在查询分析器中看到,数据库到,数据库 NorthwindNorthwind 已经被附加到已经被附加到 SQL ServSQL Serverer系统中。使用上述方法可以在现有数据文件和系统中。使用上述方法可以在现有数据文件和日志文件基础上创建新的数据库,不仅能够为一日志文件基础上创建新的数据库,不仅能够为一个现有的数据库制作出多个副本,也可以实现在个现有的数据库制作出多个副本,也可以实现在不同不同 SQL serverSQL server服务器之间移动传递数据库的服务器之间移动传递数据库的目的。目的。