学习要点: 备份的概念 备份的类型 数据库备份的方法 恢复数据库的方法 第12章 数据库的备份和恢复 学习要点: 备份的概念 备份的类型 数据库备份的方法 恢复数据库的方法
第12章 数据库的备份和恢复 12.1 备份概述 12.2 备份操作 12.3 恢复操作 12.4 恢复数据库的其他方法 12.1 备份概述 12.2 备份操作 12.3 恢复操作 12.4 恢复数据库的其他方法 12.5 数据的导入和导出
12.1 备份概述 12.1.1 为什么以及何时备份 备份是指数据库管理员定期或不定期地将数据库部分或全部内容复制到磁带或磁盘上保存起来的过程。当数据库遭到破坏时,可以利用备份进行数据库的恢复。 备份的目的就是当数据库发生意外时,尽可能的减少数据的丢失。 何时进行备份,取决于所能承受数据损失的大小。 执行备份操作必须拥有数据库备份的权限。
SQL Server 2000支持的备份类型有四种 : 12.1.2 备份类型 SQL Server 2000支持的备份类型有四种 : 完全数据库备份 差异备份 事务日志备份 文件和文件组备份
1.完全数据库备份 完全数据库备份是指备份数据库中当前所有的数据包括事务日志。与事务日志备份和差异备份相比,完全数据库备份使用的存储空间多,完成备份操作需要的时间长,所以完全数据库备份的创建频率通常比差异备份或事务日志备份低。完全数据库备份适用备份容量较小、或数据库中数据的修改较少的数据库。
2.差异备份 差异备份是指备份自上次完全数据库备份以来更改的数据。差异备份比完全数据库备份小而且备份速度快,因此可以经常地备份,经常备份将减少丢失数据的危险。差异备份适合于修改频繁的数据库。 3.事务日志备份 事务日志备份是指备份自上次备份以来数据变化的过程,即事务日志文件的信息。其中的上次备份可以是完全数据库备份、差异备份或事务日志备份。可以使用事务日志备份将数据库恢复到特定的即时点(如输入多余数据前的那一点)或恢复到故障点。
4.文件和文件组备份 文件和文件组备份适合于特大型数据库,因为一个很大的数据库要进行完全数据库备份需要很长的时间,那么可以将数据库的文件和文件组分别进行备份。
备份后如果数据库发生了意外,一般应遵循如下的步骤来进行恢复: (1)如果当前日志没有损坏,首先备份事务日志; (2)恢复最近的完全数据库备份; (3)恢复最近的差异备份(如果进行过差异备份); (4)依次恢复自差异备份以后的所有事务日志备份 (按备份的先后顺序恢复)。
12.1.3 恢复模型 SQL Server 2000 提供了三种恢复模型,以确定如何备份数据以及能承受何种程度的数据丢失。 简单恢复 12.1.3 恢复模型 SQL Server 2000 提供了三种恢复模型,以确定如何备份数据以及能承受何种程度的数据丢失。 简单恢复 完全恢复 大容量日志记录恢复
1.简单恢复 2.完全恢复 3.大容量日志记录恢复 使用简单恢复模型可以将数据库恢复到最后一次备份的时刻的 状态。不过,无法将数据库还原到故障点或特定的即时点。在简单恢复的模型下只能进行完全数据库备份和差异备份。 2.完全恢复 完全恢复提供将数据库恢复到故障点或特定即时点的能力。在完全恢复模型下能进行各种备份。 3.大容量日志记录恢复 允许大容量日志记录操作,对某些大规模或大容量复制操作提供最佳性能和最少的日志使用空间。在大容量日志记录恢复模型下能进行数据库备份、差异备份和事务日志备份。
12.1.4 备份设备 创建备份时,必须选择存放备份数据的备份设备,即存放备份的存储介质。备份设备可以是磁盘、磁带、命名管道。当建立一个备份设备是要分配一个逻辑名和一个物理名。 1.使用企业管理器创建备份设备 。 (1)打开“企业管理器”,展开服务器组,然后展开服务器。 (2)展开“管理”文件夹,右击“备份”,然后单击“新建备份设备”命令,弹出“备份设备属性”对话框,如图12-1 所示。
图12-1 备份设备属性对话框
(3)在“名称”框中输入该备份设备的名称。 (4)单击“文件名”,输入备份设备的物理文件名或 单击浏览(“...”)按钮显示“备份设备位置”对 话框,再选择备份设备所使用的物理文件。 (5)单击“确定”按钮完成创建备份设备操作。
2.使用系统存储过程sp_addumpdevice创建备份设备 sp_addumpdevice 'device_type' , 'logical_name' , 'physical_name’ device_type 是指备份设备类型, 磁盘:disk; 磁带:tape; 命名管道:pipe。 例12-1 下面的示例添加一个名为 sales_backup 的磁盘备份设备,其物理名称为D:\sales_backup.bak。 EXEC sp_addumpdevice 'disk', 'sales_backup', 'd:\sales_backup.bak'
可以使用系统存储过程sp_dropdevice删除备份设备。 例12-2 下面的示例删除上例创建的备份设备。 EXEC sp_dropdevice 'sales_backup'
12.2 备份操作 12.2.1 使用企业管理器备份数据库 (1)打开“企业管理器”,展开服务器组,然后展开服务器。 12.2 备份操作 12.2.1 使用企业管理器备份数据库 (1)打开“企业管理器”,展开服务器组,然后展开服务器。 (2)展开“数据库”文件夹,右击需要的数据库,选择“所有任务”子菜单,然后单击“备份数据库”,打开“SQL Server 备份”对话框,如图12-2 所示。
图12-2 SQL Server备份对话框
(3)在“名称”框内,输入备份名称。在“描述”框中输入对备份集的描述。也可以不填写描述框。 (4)在“备份”选项下单击“数据库—完全”。或者选择其他的备份类型。 (5)在“目的”选项下,指定备份存放的位置。单击“添加”可以添加备份文件或备份设备,如图12-3 所示。 (6)在“重写”选项下,单击“追加到媒体”,将备份追加到当前备份设备的内容之后;单击“重写现有媒体”,将重写备份设备中备份内容,即原来的内容被覆盖。 (7)选择“调度”复选框确定备份操作执行的时间,也可以直接单击“确定”按钮,立即执行备份操作。
图12-3 选择备份目的对话框
12.2.2 使用Transact-SQL 语句备份数据库 语法形式如下: BACKUP DATABASE database_name TO backup_device [ WITH [INIT | NOINIT] [ [ , ] DIFFERENTIAL ]] init:选项表示重写备份集的数据。 Noinit:选项表示备份数据将追加在原有的内容之后,NOINIT是 默 认设置。 Differential:选项表示差异备份。
例12-3 下例为 sales数据库创建一个完全数据库备份和一个差异数据库备份。 BACKUP DATABASE sales TO sales_backup With init GO with differential
使用BACKUP log命令可以对数据库进行事务日志备份 语法形式如下: BACKUP LOG database_name TO backup_device 例12-4 下例为sales数据库创建一个事务日志备份。 BACKUP LOG sales TO sales_backup
12.3 恢复操作 恢复数据库是加载备份并应用事务日志重建数据库的过程。在数据库的恢复过程中,用户不能进入数据库,即数据库是不能使用的。一般而言,总是设置该数据库中“单用户”选项为真来限制用户访问要恢复的数据库。 SQL Server中进行数据库恢复,可以使用企业管理器和Transact-SQL 语句。
12.3.1 使用企业管理器恢复数据库 (1)打开“企业管理器”,展开服务器组,然后展开服务器。 12.3.1 使用企业管理器恢复数据库 (1)打开“企业管理器”,展开服务器组,然后展开服务器。 (2)展开“数据库”文件夹,右击数据库,指向“所有任务”子菜单,然后单击“还 原数据库”命令。弹出“还原数据库”对话框,如图12-4 所示。 (3)在“还原为数据库”框中,如果要还原的数据库名称与显示的默认数据库名称不同,请在其中进行输入或选择。若要用新名称还原数据库,请输入新的数据库名称。
(4)单击“数据库”,在“要还原的第一个备份”列表中,选择要还原的备份集。如果要将一个服务器上的数据库备份恢复到另一个服务器上,应选择“从设备”还原。 (5)在“还原”列表中,单击要还原的数据库备份。 (6)单击“选项”选项卡,根据需要进行各选项的设置,如图12-5 所示。 (7)单击“确定”按钮开始恢复数据库。
图12-4 还原数据库对话框
图12-5 还原数据库对话框“选项”选项卡
12.3.2 使用Transact-SQL 语句恢复数据库 语法形式如下: RESTORE DATABASE database_name FROM backup_device [ WITH [FILE = file_number ] [ [ , ] { NORECOVERY | RECOVERY | STANDBY= undo_file_name } ] ]
其中: FILE = file_number:标识要还原的备份集。例如,file_number 为 1 表示备份媒体上的第一个备份集,file_number 为 2 表示第二个备份集。 NORECOVERY:表示还原操作不回滚任何未提交的事务。如果需要恢复另一个事务日志,则必须指定 NORECOVERY 或 STANDBY 选项。如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,则默认为 RECOVERY。当还原数据库备份和多个事务日志时,或在需要多个 RESTORE 语句时(例如在完整数据库备份后进行差异数据库备份),SQL Server 要求在除最后的 RESTORE 语句外的所有其它语句上使用 WITH NORECOVERY 选项。 RECOVERY:表示还原操作回滚任何未提交的事务。在恢复后即可使用数据库。只有在最后一步恢复是使用。
例12-4:从 sales_backup备份设备中还原完全数据库备份后还原差异备份。 RESTORE DATABASE sales FROM sales_backup WITH NORECOVERY RESTORE DATABASE sales FROM sales_buckup WITH FILE = 2
12.4 恢复数据库的其他方法 12.4.1 数据库的脱机和联机 具体操作步骤如下: 12.4 恢复数据库的其他方法 12.4.1 数据库的脱机和联机 具体操作步骤如下: (1)打开“企业管理器”,展开服务器组,然后展开服务器。 (2)展开“数据库”文件夹,右击Pubs数据库,指向“所有任务”子菜单,然后单击“脱机”命令。 (3)在Pubs数据库旁出现“脱机”两字,操作完成。这时可以对Pubs 的数据库文件进行复制。 脱机的数据库要恢复使用,则使用联机操作。
12.4.2 分离和附加数据库 SQL Server 2000 允许分离数据库的数据文件和事务日志文件,然后将其重新附加到另一台服务器,甚至同一台服务器上 。 如果想将数据库从一台计算机移到另一台计算机或者从一个物理磁盘移到另一物理磁盘上,则分离和附加数据库很有用:一般是先分离数据库;然后将数据库文件移到另一服务器或磁盘;最后通过指定移动文件的新位置附加数据库。当附加在数据库时,必须指定主数据文件的名称和物理位置。
12.5 数据的导入和导出 在实际工作中我们的数据可能存储在Excel、Access、Sybase、Oracle等数据库中,用户有时需要在SQL Server中利用这些数据,这就需要一种工具能够将数据转换到SQL Server中。SQL Server提供了一种很容易的把数据从一个SQL Server数据库或非SQL Server数据库 传输到一个SQL Server数据库的方法,这就是使用数据传输服务(Data Transformation Services ,DTS)。通过DTS用户可以进行不同数据源之间数据的导入、导出和转换。
12.5.1 数据的导入 例12-6 将Excel 表中的数据导入SQL Server中的mydb数据库中。具体操作步骤如下: 12.5.1 数据的导入 例12-6 将Excel 表中的数据导入SQL Server中的mydb数据库中。具体操作步骤如下: (1)打开“企业管理器”,展开服务器组,然后展开服务器。 (2)右击“数据库”,选择“所有任务”中的“导入数据”,弹出“数据转换服务导入/导出向导”。 (3)单击“下一步”,出现“选择数据源”对话框,在“数据源” 下拉列表框中选择“Microsoft Excel 97-2000”,如图12-9所示对话框。在“文件名”框中选择需要导入的文件的路径和文件名。
图12-9 导入/导出选择数据源对话框
(4)单击“下一步”,出现如图12-10 所示对话框。选择目的,在数据库框中选择mydb。 图12-10 选择目的
(5)单击“下一步”,选中“从源数据复制表和视图”,如图12-11 所示对话框。 图12-11 选择方式
(6)单击“下一步”,出现如图12-12所示对话框,选择需要复制的表和视图。 图12-12 选择表和视图对话框
(7)单击“下一步”,出现保存、调度和复制包对话框,如图12-13所示。 图12-13 保存、调度和复制包对话框
(8)单击“下一步”,出现完成对话框,如图12-14所示。 图12-14 完成对话框
(9)单击“完成”按钮,开始复制数据。如图12-15所示。 图12-15 数据导入对话框
12.5.2 数据的导出 数据的导出是指将SQL Server中的数据转为用户指定的格式的过程,例如将 SQL Server 表的内容复制到 Microsoft Access 数据库中。使用向导完成数据的导出工作的步骤和数据的导入相似。
小结: 本章主要介绍了SQL Server2000的备份和恢复的相关知识。讲述了备份的四种类型,备份设备的创建,通过企业管理器和Transact-SQL语句进行备份和恢复的具体操作的方法,以及数据的导入和导出。