1、 基基 本本 概概 念念16.1备份数据库备份数据库16.2恢复数据库恢复数据库16.3 为了防止因软硬件故障而导致数据丢为了防止因软硬件故障而导致数据丢失或数据库的崩溃,数据备份和恢复工作失或数据库的崩溃,数据备份和恢复工作就成了一项不容忽视的系统管理工作。就成了一项不容忽视的系统管理工作。备份就是制作数据库结构、对象和数备份就是制作数据库结构、对象和数据的拷贝,以便在数据库遭到破坏的时候据的拷贝,以便在数据库遭到破坏的时候能够还原和恢复数据。恢复是指从一个或能够还原和恢复数据。恢复是指从一个或多个备份中还原数据,并在还原最后一个多个备份中还原数据,并在还原最后一个备份后恢复数据库的操作。备
2、份后恢复数据库的操作。16.1.1 备份的作用备份的作用 通过适当的备份,可以将数据库从多通过适当的备份,可以将数据库从多种故障中恢复,包括:种故障中恢复,包括:存储媒体损坏,例如存放数据库数据的存储媒体损坏,例如存放数据库数据的硬盘损坏;硬盘损坏;用户操作错误(例如,偶然或恶意地修用户操作错误(例如,偶然或恶意地修改或删除数据);改或删除数据);硬件故障(例如,磁盘驱动器损坏或服硬件故障(例如,磁盘驱动器损坏或服务器报废);务器报废);自然灾难。自然灾难。恢复模式是一个数据库属性,它用于恢复模式是一个数据库属性,它用于控制数据库备份和还原操作的基本行为。控制数据库备份和还原操作的基本行为。例
3、如,恢复模式控制了将事务记录在日志例如,恢复模式控制了将事务记录在日志中的方式、事务日志是否需要备份以及可中的方式、事务日志是否需要备份以及可用的还原操作。用的还原操作。(1)简化了恢复计划;)简化了恢复计划;(2)简化了备份和恢复过程;)简化了备份和恢复过程;(3)明确了系统操作要求之间的权)明确了系统操作要求之间的权衡;衡;(4)明确了可用性和恢复要求之间)明确了可用性和恢复要求之间的权衡。的权衡。在在SQL Server 2005中,可以选择中,可以选择3种种恢复模式:简单恢复模式、完整恢复模式恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。和大容量日志恢复模式。(1)简单恢复
4、模式)简单恢复模式 此模式简略地记录大多数事务,所记此模式简略地记录大多数事务,所记录的信息只是为了确保在系统崩溃或还原录的信息只是为了确保在系统崩溃或还原数据备份之后数据库的一致性。数据备份之后数据库的一致性。(2)完整恢复模式)完整恢复模式 此模式完整地记录了所有的事务,并此模式完整地记录了所有的事务,并保留所有的事务日志记录,直到将它们备保留所有的事务日志记录,直到将它们备份。份。(3)大容量日志恢复模式)大容量日志恢复模式 此模式简略地记录大多数大容量操作此模式简略地记录大多数大容量操作(例如索引创建和大容量加载),完整地(例如索引创建和大容量加载),完整地记录其他事务。大容量日志恢复
5、模式提高记录其他事务。大容量日志恢复模式提高了大容量操作的性能,常用作完整恢复模了大容量操作的性能,常用作完整恢复模式的补充。式的补充。SQL Server 2005在数据库的备份和恢在数据库的备份和恢复方面进行了一些改进,引入了一些新的复方面进行了一些改进,引入了一些新的功能。它支持以下多种备份类型。功能。它支持以下多种备份类型。完整备份(以前称为数据库备份)将完整备份(以前称为数据库备份)将备份整个数据库,包括事务日志部分(以备份整个数据库,包括事务日志部分(以便可以恢复整个备份)。完整备份代表备便可以恢复整个备份)。完整备份代表备份完成时的数据库。份完成时的数据库。“完整差异备份完整差异
6、备份”仅记录自上次完整仅记录自上次完整备份后更改过的数据。备份后更改过的数据。完整差异备份基于以前的完整备份,完整差异备份基于以前的完整备份,因此,这样的完整备份称为因此,这样的完整备份称为“基准备份基准备份”。差异备份仅记录自基准备份后更改过的数差异备份仅记录自基准备份后更改过的数据。据。部分备份与完整备份相似,但部分备部分备份与完整备份相似,但部分备份并不包含所有文件组。部分备份包含主份并不包含所有文件组。部分备份包含主文件组、每个读写文件组以及任何指定的文件组、每个读写文件组以及任何指定的只读文件中的所有数据。只读文件中的所有数据。部分差异备份仅记录文件组中自上次部分差异备份仅记录文件组
7、中自上次部分备份后更改的数据,这样的部分备份部分备份后更改的数据,这样的部分备份称为差异备份的称为差异备份的“基准备份基准备份”。可以分别备份和还原数据库中的文件。可以分别备份和还原数据库中的文件。使用文件备份使用户可以仅还原已损坏的使用文件备份使用户可以仅还原已损坏的文件,而不必还原数据库的其余部分,从文件,而不必还原数据库的其余部分,从而提高恢复速度。而提高恢复速度。创建文件或文件组的完整备份后,可创建文件或文件组的完整备份后,可以基于该完整备份创建一系列的差异备份。以基于该完整备份创建一系列的差异备份。文件差异备份只捕获自上一次文件备文件差异备份只捕获自上一次文件备份以来更改的数据。份以
8、来更改的数据。事务日志备份仅用于完整恢复模式或事务日志备份仅用于完整恢复模式或大容量日志恢复模式。大容量日志恢复模式。16.2.1 备份设备备份设备 备份或还原操作中使用的磁带机或磁备份或还原操作中使用的磁带机或磁盘驱动器称为盘驱动器称为“备份设备备份设备”。1磁盘设备磁盘设备2磁带设备磁带设备3物理和逻辑设备物理和逻辑设备 SQL Server Database Engine使用物使用物理设备名称或逻辑设备名称标识备份设备。理设备名称或逻辑设备名称标识备份设备。物理备份设备是操作系统用来标识备物理备份设备是操作系统用来标识备份设备的名称,如份设备的名称,如C:BackupsAccountin
9、gFull.bak。逻辑备份设备是用户定义的别名,用逻辑备份设备是用户定义的别名,用来标识物理备份设备。逻辑设备名称永久来标识物理备份设备。逻辑设备名称永久性地存储在性地存储在SQL Server内的系统表中。内的系统表中。利用利用SQL Server Management Studio工具,可以方便地完成数据库的备份工作。工具,可以方便地完成数据库的备份工作。步骤如下。步骤如下。(1)启动)启动SQL Server Management Studio工具,在工具,在“对象资源管理器对象资源管理器”中展开中展开Database Engine实例。实例。(2)在需要进行备份操作的数据库名上右)在
10、需要进行备份操作的数据库名上右击,选择快捷菜单中的击,选择快捷菜单中的“Tasks”“Back Up”。(3)在)在“Back Up Database”对话框中,对话框中,“Database”列表框用来选择要备份的数列表框用来选择要备份的数据库;据库;“Recovery model”列表框查看为列表框查看为所选数据库显示的恢复模式(所选数据库显示的恢复模式(FULL、SIMPLE或或BULK_LOGGED););“Back Up Type”列表框显示要对指定数据库执列表框显示要对指定数据库执行的备份的类型。行的备份的类型。“Backup component”选择要备份的选择要备份的数据库组件。
11、数据库组件。在在“Backup set”中,中,“Name”指定指定备份集名称,系统将根据数据库名称和备备份集名称,系统将根据数据库名称和备份类型自动建议一个默认名称。份类型自动建议一个默认名称。“Description”文本框中,可以输入文本框中,可以输入备份集的说明。备份集的说明。“Backup set will expire”用来指定备用来指定备份集过期时间。份集过期时间。“Destination”选择媒体之一,作为选择媒体之一,作为要备份到的目标。其中,要备份到的目标。其中,“Disk”表示备表示备份到磁盘;份到磁盘;“Tape”表示备份到磁带,如表示备份到磁带,如果服务器没有相连的磁
12、带设备,此选项将果服务器没有相连的磁带设备,此选项将不可用。不可用。“Back Up Database”对话框如图对话框如图16-5所示,单击所示,单击“OK”按钮,将完成数据库按钮,将完成数据库的备份操作。的备份操作。图图16-5 “Back Up Database”16-5 “Back Up Database”对话框对话框 BACKUP命令用来对指定数据库进行命令用来对指定数据库进行完整备份、完整差异备份、文件和文件组完整备份、完整差异备份、文件和文件组备份、文件差异备份、部分备份、部分差备份、文件差异备份、部分备份、部分差异备份、事务日志备份。异备份、事务日志备份。其语法格式如下:其语法
13、格式如下:BACKUP DATABASE database_nameTO ,.n WITH DESCRIPTION=text ,DIFFERENTIAL ,EXPIREDATE=date|RETAINDAYS=days ,INIT|NOINIT ,NAME=backup_set_name 其中,其中,:=logical_backup_device_name|DISK|TAPE=physical_backup_device_name 各参数的含义如下。各参数的含义如下。(1)database_name 备份事务日志、部分数据库或完整的备份事务日志、部分数据库或完整的数据库时所用的源数据库。数据库
14、时所用的源数据库。(2)指定用于备份操作的逻辑备份设备或指定用于备份操作的逻辑备份设备或物理备份设备。物理备份设备。(3)DESCRIPTION=text 指定说明备份集的文本字符串。指定说明备份集的文本字符串。(4)DIFFERENTIAL 指定数据库备份或文件备份应该只包指定数据库备份或文件备份应该只包含上次完整备份后更改的数据库或文件部含上次完整备份后更改的数据库或文件部分。分。(5)EXPIREDATE=date 指定备份集到期和允许被覆盖的日期。指定备份集到期和允许被覆盖的日期。(6)RETAINDAYS=days 指定必须经过多少天才可以覆盖该备指定必须经过多少天才可以覆盖该备份媒
15、体集。份媒体集。(7)INIT 指定应覆盖该设备上所有现有的备份指定应覆盖该设备上所有现有的备份集。集。(8)NOINIT 表示备份集将追加到指定的媒体集上,表示备份集将追加到指定的媒体集上,以保留现有的备份集。以保留现有的备份集。NOINIT是默认设是默认设置。置。(9)NAME=backup_set_name 指定备份集的名称。指定备份集的名称。其语法格式如下:其语法格式如下:BACKUP DATABASE database_name ,.f TO ,.n WITH DESCRIPTION=text ,DIFFERENTIAL ,EXPIREDATE=date|RETAINDAYS=day
16、s ,INIT|NOINIT ,NAME=backup_set_name 其中,其中,:=FILE=logical_file_name|FILEGROUP=logical_filegroup_name|READ_WRITE_FILEGROUPS 其语法格式如下:其语法格式如下:BACKUP LOG database_name TO ,.n WITH DESCRIPTION=text ,EXPIREDATE=date|RETAINDAYS=days ,INIT|NOINIT ,NAME=backup_set_name ,NO_TRUNCATE ,NORECOVERY|STANDBY=standb
17、y_file_name 16.3.1 使用使用SQL Server Management Studio恢复数据库恢复数据库 利用利用SQL Server Management Studio工具,可以方便地完成恢复数据库的操作。工具,可以方便地完成恢复数据库的操作。(1)启动)启动SQL Server Management Studio工具,在工具,在“对象资源管理器对象资源管理器”中展开中展开Database Engine实例。实例。(2)在数据库名上右击,选择快捷菜单中)在数据库名上右击,选择快捷菜单中的的“Tasks”“Restore”“Database”。(3)弹出)弹出“Restore
18、 Database”对话框。对话框。其中,其中,“Destination for restore”用于指用于指定还原的目标,在定还原的目标,在“To database”列表框列表框中,为还原操作选择现有数据库的名称或中,为还原操作选择现有数据库的名称或键入新数据库名称。在键入新数据库名称。在“Select the backup sets to restore”中,选择用于还原的备份中,选择用于还原的备份集,集,“Type”列显示备份集的类型。列显示备份集的类型。(4)选择对话框中的)选择对话框中的“Options”,可以,可以查看和修改还原选项。查看和修改还原选项。RESTORE命令用于对备份
19、数据库进命令用于对备份数据库进行恢复。行恢复。1完整还原完整还原 完整还原的语法格式如下:完整还原的语法格式如下:RESTORE DATABASE database_name FROM ,.n WITH FILE=file_number ,MOVE logical_file_name TO operating_system_file_name ,.n ,RECOVERY|NORECOVERY|STANDBY=standby_file_name ,REPLACE :=logical_backup_device_name|DISK|TAPE =physical_backup_device_name
20、 部分还原的语法格式如下:部分还原的语法格式如下:RESTORE DATABASE database_name FROM ,.n WITH PARTIAL FILE=file_number ,MOVE logical_file_name TO operating_system_file_name ,.n ,NORECOVERY ,REPLACE :=logical_backup_device_name|DISK|TAPE =physical_backup_device_name :=FILE=logical_file_name|FILEGROUP=logical_filegroup_name
21、文件还原或页面还原的语法格式如下:文件还原或页面还原的语法格式如下:RESTORE DATABASE database_name ,.f FROM ,.n WITH FILE=file_number ,MOVE logical_file_name TO operating_system_file_name ,.n ,NORECOVERY ,REPLACE :=logical_backup_device_name|DISK|TAPE =physical_backup_device_name :=FILE=logical_file_name|FILEGROUP=logical_filegroup_
22、name 事务日志还原的语法格式如下:事务日志还原的语法格式如下:RESTORE LOG database_name ,.f FROM ,.n WITH FILE=file_number ,MOVE logical_file_name TO operating_system_file_name ,.n ,RECOVERY|NORECOVERY|STANDBY=standby_file_name ,REPLACE :=logical_backup_device_name|DISK|TAPE =physical_backup_device_name :=FILE=logical_file_name|FILEGROUP=logical_filegroup_name