首页计算机计算机软件空间数据库与SQL 08 第8章 备份与恢复.pptx

08 第8章 备份与恢复.pptx

页数:58页文件大小:2.21 MB来源: 空间数据库与SQLppt课件

本课件先说明备份与恢复的基本概念、恢复模式与备份设备的创建,随后分别演示界面方式与命令方式的完整备份、差异备份、事务日志备份及对应恢复操作,最后介绍复制与附加数据库的方法。

8.1备份和恢复概述章节封面,标示本章主题与所涵盖的小节:8.1备份和恢复概述;8.2备份操作和备份命令;8.3恢复操作和恢复命令;8.4复制数据库
备份和恢复需求分析数据库中的数据丢失或被破坏可能是由于以下原因:(1)计算机硬件故障
备份内容数据库中数据的重要程度决定了数据恢复的必要性与重要性,也就决定了数据是否需要备份及如何备份
查看本课件的文字版(共 58 页,供检索与复制)

第1页:8.1 备份和恢复概述

8.1备份和恢复概述8.2备份操作和备份命令8.3恢复操作和恢复命令8.4复制数据库8.5附加数据库

第2页:8.1.1 备份和恢复

8.1.1备份和恢复需求分析数据库中的数据丢失或被破坏可能是由于以下原因:

  • 计算机硬件故障。由于使用不当或产品质量等原因,计算机硬件可能会出现故障,不能使用。如硬盘损坏会使得存储于其上的数据丢失。
  • 软件故障。由于软件设计上的失误或用户使用的不当,软件系统可能会误操作数据引起数据破坏。
  • 病毒。破坏性病毒会破坏系统软件、硬件和数据。
  • 误操作。如用户误用了诸如DELETE、UPDATE等命令而引起数据丢失或被破坏。
  • 自然灾害。如火灾、洪水或地震等,它们会造成极大的破坏,会毁坏计算机系统及其数据。
  • 盗窃。一些重要数据可能会遭窃。

第3页:1.备份内容数据库中数据

1.备份内容数据库中数据的重要程度决定了数据恢复的必要性与重要性,也就决定了数据是否需要备份及如何备份。数据库需备份的内容可分为数据文件(又分为主要数据文件和次要数据文件)、日志文件两部分。其中,数据文件中所存储的系统数据库是确保SQL Server 2008系统正常运行的重要依据,无疑,系统数据库必须完全备份。

2.由谁做备份在SQL Server 2008中,具有下列角色的成员可以做备份操作:

  • 固定的服务器角色sysadmin(系统管理员)。
  • 固定的数据库角色db_owner(数据库所有者)。
  • 固定的数据库角色db_backupoperator(允许进行数据库备份的用户)。3.备份介质备份介质是指将数据库备份到的目标载体,即备份到何处。在SQL Server 2008中,允许使用两种类型的备份介质。
  • 硬盘:是最常用的备份介质,可以用于备份本地文件,也可以用于备份网络文件。
  • 磁带:是大容量的备份介质,磁带仅可用于备份本地文件。

第4页:4.何时备份

4.何时备份

  • 系统数据库。当系统数据库master、msdb和model中的任何一个被修改以后,都要将其备份。master数据库包含了SQL Server 2008系统有关数据库的全部信息,即它是“数据库的数据库”。如果master数据库损坏,那么SQL Server 2008可能无法启动,并且用户数据库可能无效。当master数据库被破坏而没有master数据库的备份时,就只能重建全部的系统数据库了。
  • 用户数据库。当创建数据库或加载数据库时,应备份数据库。当为数据库创建索引时,应备份数据库,以便恢复时大大节省时间。当清理了日志或执行了不记日志的T-SQL命令时,应备份数据库,这是因为若日志记录被清除或命令未记录在事务日志中,日志中将不包含数据库的活动记录,因此不能通过日志恢复数据。不记日志的命令有BACKUP LOG WITH NO_LOG、WRITETEXT、UPDATETEXT、SELECT INTO、命令行实用程序、BCP命令等。

第5页:5.限制的操作

5.限制的操作SQL Server 2008在执行数据库备份的过程中,允许用户对数据库继续操作,但不允许用户在备份时执行下列操作:创建或删除数据库文件;创建索引;不记日志的命令。若在系统正执行上述操作中的任何一种时试图进行备份,则备份进程不能执行。6.备份方法数据库备份常用的两类方法是完全备份和差异备份。

完全备份每次都备份整个数据库或事务日志,差异备份则只备份自上次备份以来发生过变化的数据库的数据。差异备份也称为增量备份。

第6页:两种基本备份方式

SQL Server 2008中有两种基本的备份:一是只备份数据库,二是备份数据库和事务日志,它们又都可以与完全或差异备份相结合。另外,当数据库很大时,也可以进行个别文件或文件组的备份,从而将数据库备份分割为多个较小的备份过程。这样就形成了以下4种备份方法:

  • 完全数据库备份。这种方法按常规定期备份整个数据库,包括事务日志。当系统出现故障时,可以恢复到最近一次数据库备份时的状态,但自该备份后所提交的事务都将丢失。完全数据库备份的主要优点是简单,备份是单一操作,可按一定的时间间隔预先设定,恢复时只需一个步骤就可以完成。
  • 数据库和事务日志备份。这种方法不需很频繁地定期进行数据库备份,而是在两次完全数据库备份期间,进行事务日志备份,所备份的事务日志记录了两次数据库备份之间所有的数据库活动记录。当系统出现故障后,能够恢复所有备份的事务,而只丢失未提交或提交但未执行完的事务。执行恢复时,需要两步:首先恢复最近的完全数据库备份,然后恢复在该完全数据库备份以后的所有事务日志备份。

第7页:(3)差异备份

(3)差异备份。差异备份只备份自上次数据库备份后发生更改的部分数据库,它用来扩充完全数据库备份或数据库和事务日志备份方法。对于一个经常修改的数据库,采用差异备份策略可以减少备份和恢复时间。差异备份比全量备份工作量小而且备份速度快,对正在运行的系统影响也较小,因此可以更经常地备份。经常备份将减少丢失数据的危险。

使用差异备份方法,执行恢复时,若是数据库备份,则用最近的完全数据库备份和最近的差异数据库备份来恢复数据库;若是差异数据库和事务日志备份,则需用最近的完全数据库备份和最近的差异备份后的事务日志备份来恢复数据库。(4)数据库文件或文件组备份。

这种方法只备份特定的数据库文件或文件组,同时还要定期备份事务日志,这样在恢复时可以只还原已损坏的文件,而不用还原数据库的其余部分,从而加快了恢复速度。

第8页:1.准备工作数据库恢复

1.准备工作数据库恢复的准备工作包括系统安全性检查和备份介质验证。在进行恢复时,系统先执行安全性检查、重建数据库及其相关文件等操作,保证数据库安全地恢复,这是数据库恢复必要的准备,可以防止错误的恢复操作。例如,用不同的数据库备份或用不兼容的数据库备份信息覆盖某个已存在的数据库。当系统发现出现了以下情况时,恢复操作将不进行:

  • 指定要恢复的数据库已存在,但在备份文件中记录的数据库与其不同;
  • 服务器上数据库文件集与备份中的数据库文件集不一致;
  • 未提供恢复数据库所需的所有文件或文件组。

第9页:安全性检查

安全性检查是系统在执行恢复操作时自动进行的。在恢复数据库时,要确保数据库的备份是有效的,即要验证备份介质,得到数据库备份的信息。这些信息包括:备份文件或备份集名及描述信息。所使用的备份介质类型(磁带或磁盘等)。所使用的备份方法。执行备份的日期和时间。备份集的大小。数据库文件及日志文件的逻辑和物理文件名。备份文件的大小。

2.执行恢复数据库的操作可以提供使用图形向导方式或T-SQL语句执行恢复数据库的操作。具体的恢复操作步骤将在8.3节进行详细的介绍。

第10页:8.2.1 创建备份设备

8.2.1创建备份设备1.创建永久备份设备若使用磁盘设备备份,那么备份设备实际上就是磁盘文件;若使用磁带设备备份,那么备份设备实际上就是一个或多个磁带。创建该备份设备有两种方法:使用图形向导方式或使用系统存储过程sp_addumpdevice。(1)使用系统存储过程创建命名备份设备。

执行系统存储过程sp_addumpdevice可以在磁盘或磁带上创建命名备份设备,也可以将数据定向到命名管道。创建命名备份设备时,要注意以下几点:①SQL Server 2008将在系统数据库master的系统表sysdevice中创建该命名备份设备的物理名和逻辑名。

②必须指定该命名备份设备的物理名和逻辑名,当在网络磁盘上创建命名备份设备时要说明网络磁盘文件路径名。

第11页:创建备份设备的语法

语法格式:sp_addumpdevice [ @devtype = ] 'device_type' ,[ @logicalname = ] 'logical_name' ,[ @physicalname = ] 'physical_name'

【例8.1】在本地硬盘上

在本地硬盘上创建一个备份设备。 USE master GO EXEC sp_addumpdevice 'disk', 'mybackupfile','E:\data\mybackupfile.bak'上例所创建的备份设备的逻辑名是mybackupfile。所创建的备份设备的物理名是E:\data\mybackupfile.bak。

【例8.2】在磁带上

在磁带上创建一个备份设备。 EXEC sp_addumpdevice 'tape', 'tapebackupfile', '\\.\tape0'

第12页:(2)使用对象资源管理器

(2)使用对象资源管理器创建永久备份设备。在SSMS中创建备份设备,步骤如下。启动SQL Server Management Studio,在对象资源管理器中展开“服务器对象”,选择“备份设备”,在“备份设备”的列表上可以看到上例中使用系统存储过程创建的备份设备,右击鼠标,在弹出的快捷菜单中选择“新建备份设备”菜单项。

在打开的“备份设备”窗口中分别输入备份设备的名称和完整的物理路径名,单击“确定”按钮,完成备份设备的创建。当所创建的“命名备份设备”不再需要时,可用图形向导方式或系统存储过程sp_dropdevice删除它。

在SQL Server Management Studio中删除“命名备份设备”时,若被删除的“命名备份设备”是磁盘文件,那么必须在其物理路径下用手工删除该文件。

用系统存储过程sp_dropdevice删除命名备份文件时,若被删除的“命名备份设备”的类型为磁盘,那么必须指定DELFILE选项,但备份设备的物理文件一定不能直接保存在磁盘根目录下。例如,EXEC sp_dropdevice 'mybackupfile' , DELFILE

第13页:2.创建临时备份设备

2.创建临时备份设备例如,如果只要进行数据库的一次性备份或测试自动备份操作,那么就用临时备份设备。在创建临时备份设备时,要指定介质类型(磁盘、磁带)、完整的路径名及文件名称。可使用T-SQL的BACKUP DATABASE语句创建临时备份设备。对使用临时备份设备进行的备份,SQL Server 2008系统将创建临时文件来存储备份的结果。

语法格式:BACKUP DATABASE { database_name | @database_name_var }TO <backup_file> [, …n ]其中,<backup_file>::={ { backup_file_name | @backup_file_name_evar } |{ DISK | TAPE } = { temp_file_name | @temp_file_name_evar }

【例8.3】在磁盘上

在磁盘上创建一个临时备份设备,它用来备份数据库PXSCJ。 USE master GO BACKUP DATABASE PXSCJ TO DISK= 'E:\data\tmppxscj.bak'

第14页:图8.1 使用多个备份设备及备份集

3.使用多个备份设备SQL Server可以同时向多个备份设备写入数据,即进行并行的备份。并行备份将需备份的数据分别备份在多个设备上,这多个备份设备构成了备份集。图8.1显示了在多个备份设备上进行备份以及由备份的各组成部分形成备份集。图8.1使用多个备份设备及备份集

第15页:多备份设备并行备份要点

在用多个备份设备进行并行备份时,要注意:

  • 设备备份操作使用的所有设备必须具有相同的介质类型。
  • 多设备备份操作使用的设备其存储容量和运行速度可以不同。
  • 可以使用命名备份设备与临时备份设备的组合。
  • 从多设备备份恢复时,不必使用与备份时相同数量的设备。

第16页:1.备份整个数据库

1.备份整个数据库语法格式。

【例8.4】使用逻辑名

使用逻辑名test1在E盘中创建一个命名的备份设备,并将数据库PXSCJ完全备份到该设备。 USE master GO EXEC sp_addumpdevice 'disk' , 'test1', 'E:\data\test1.bak' BACKUP DATABASE PXSCJ TO test1

第17页:图8.2 使用BACKUP语句

本例的执行结果如图8.2所示。图8.2使用BACKUP语句进行完全数据库备份

第18页:【例8.5】将数据库

【例8.5】将数据库

将数据库PXSCJ备份到多个备份设备。 USE master GO EXEC sp_addumpdevice 'disk','test2','E:\data\test2.bak' EXEC sp_addumpdevice 'disk','test3','E:\data\test3.bak' BACKUP DATABASE PXSCJ TO test2, test3 WITH NAME = 'pxscjbk'

第19页:2.差异备份数据库

2.差异备份数据库对于需频繁修改的数据库,进行差异备份可以缩短备份和恢复的时间。只有当已经执行了完全数据库备份后才能执行差异备份。在进行差异备份时,SQLServer将备份从最近的完全数据库备份后数据库发生了变化的部分。

语法格式:BACKUP DATABASE { database_name | @database_name_var }READ_WRITE_FILEGROUPS[ , FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }[ ,...n ] ]TO <backup_device> [ , … n ][ [ MIRROR TO < backup_device > [ ,...n ] ] [ ...next-mirror ] ][ WITH{[[,] DIFFERENTIAL ]}]

第20页:SQL Server

SQL Server执行差异备份时需注意下列几点:(1)若在上次完全数据库备份后,数据库的某行被修改了,则执行差异备份只保存最后一次改动的值;(2)为了使差异备份设备与完全数据库备份设备区分开来,应使用不同的设备名。

【例8.6】创建临时备份设备

创建临时备份设备并在所创建的临时备份设备上进行差异备份。 BACKUP DATABASE PXSCJ TODISK ='E:\data\pxscjbk.bak' WITH DIFFERENTIAL

第21页:3.备份数据库文件

3.备份数据库文件或文件组当数据库非常大时,可以进行数据库文件或文件组的备份。

语法格式:BACKUP DATABASE { database_name | @database_name_var }<file_or_filegroup> [ ,...f ]TO <backup_device> [ ,...n ][ [ MIRROR TO <backup_device> [ ,...n ] ] [ ...next-mirror ] ][ WITH{[[,] DIFFERENTIAL ]}]其中,<file_or_filegroup>::={FILE = { logical_file_name | @logical_file_name_var }| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }}

第22页:数据库文件备份要点

使用数据库文件或文件组备份时,要注意以下几点:(1)必须指定文件或文件组的逻辑名;(2)必须执行事务日志备份,以确保恢复后的文件与数据库其他部分的一致性;(3)应轮流备份数据库中的文件或文件组,以使数据库中的所有文件或文件组都定期得到备份;

【例8.7】设

设TT数据库有2个数据文件t1和t2,事务日志存储在文件tlog中。将文件t1备份到备份设备t1backup中,将事务日志文件备份到tbackuplog中。 EXEC sp_addumpdevice 'disk', 't1backup', 'E:\data\t1backup.bak' EXEC sp_addumpdevice 'disk', 'tbackuplog', 'E:\data\tbackuplog.bak' GO BACKUP DATABASE TTFILE ='t1' TO t1backup BACKUP LOG TT TO tbackuplog

第23页:4.事务日志备份

4.事务日志备份当进行事务日志备份时,系统进行下列操作:

  • 将事务日志中从前一次成功备份结束位置开始,到当前事务日志结尾处的内容进行备份。
  • 标识事务日志中活动部分的开始,所谓事务日志的活动部分指从最近的检查点或最早的打开位置开始至事务日志的结尾处。进行事务日志备份使用BACKUP LOG语句。语法格式:BACKUP LOG { database_name | @database_name_var }{TO <backup_device> [ ,...n ][ [ MIRROR TO <backup_device> [ ,...n ] ] [ ...next-mirror ] ][ WITH{{ NORECOVERY | STANDBY = undo_file_name }| NO_TRUNCATE ]|}}

第24页:讨论三个专

下面讨论三个专用于事务日志备份的选项。NO_TRUNCATE选项:若数据库被损坏,则应使用NO_TRUNCATE选项备份数据库。使用该选项可以备份最近的所有数据库活动,SQL Server将保存整个事务日志。使用此选项进行数据库备份,当执行恢复时,可以恢复数据库和采用了NO_TRUNCATE选项创建的事务日志。

NORECOVERY选项:该选项将数据备份到日志尾部,不覆盖原有的数据。STANDBY选项:该选项将备份日志尾部,并使数据库处于只读或备用模式。其中的undo_file_name是要撤销的文件名,该文件名指定了容纳回滚(roll back)更改的存储。如果随后执行RESTORE LOG操作,则必须撤销这些回滚更改。

如果指定的撤销文件名不存在,SQL Server将创建该文件;如果该文件已存在,则SQL Server将重写它。

【例8.8】创建一个命名

创建一个命名的备份设备PXSCJLOGBK,并备份PXSCJ数据库的事务日志。 USE master GO EXEC sp_addumpdevice 'disk' , 'PXSCJLOGBK' , 'E:\data\testlog.bak' BACKUP LOG PXSCJ TO PXSCJLOGBK

第25页:图8.3 事务日志备份

该语句的执行结果如图8.3所示。图8.3事务日志备份

第26页:备份PXSCJ数据库

以备份PXSCJ数据库为例,在备份之前先在E盘根目录下创建一个备份设备,名称为PXSCJBK,备份设备的文件名为pxscjbk.bak。在SQL Server Management Studio中进行备份的步骤如下。

第1步:启动SQL Server Management Studio,在对象资源管理器中选择“管理”,右击鼠标,如图8.4所示,在弹出的快捷菜单上选择“备份”菜单项。图8.4选择备份功能

第27页:第2步:在打开

第2步:在打开的“备份数据库”窗口(如图8.5所示)中选择要备份的数据库名,如PXSCJ;在“备份类型”栏选择备份的类型,有3种类型:完整、差异、事务日志,这里选择完整备份。图8.5“备份数据库”对话框

第28页:第3步:选择了数据库之后

第3步:选择了数据库之后,窗口最下方的目标栏中会列出与PXSCJ数据库相关的备份设备。可以单击“添加”按钮在“选择备份目标”对话框中选择另外的备份目标(即命名的备份介质的名称或临时备份介质的位置),有两个选项:“文件名”和“备份设备”。

选择“备份设备”选项,在下拉框中选择需要将数据库备份到的目标备份设备,如mybackupfile,如图8.6所示,单击“确定”按钮。当然,也可以选择“文件名”选项,然后选择备份设备的物理文件来进行备份。

图8.6“选择备份目标”对话框第4步:在“备份数据库”窗口中,将不需要的备份目标选择后单击“删除”按钮删除,最后备份目标选择为“mybackupfile”,单击“确定”按钮,执行备份操作。备份操作完成后,将出现提示对话框,单击“确定”按钮,完成所有步骤。

第29页:8.3.1 检查点

8.3.1检查点在SQL Server运行过程中,数据库的大部分页存储于磁盘的主数据文件和辅数据文件中,而正在使用的数据页则存储在主存储器的缓冲区中,所有对数据库的修改都记录在事务日志中。日志记录每个事务的开始和结束,并将每个修改与一个事务相关联。

SQL Server系统在日志中存储有关信息,以便在需要时可以恢复(前滚)或撤销(回滚)构成事务的数据修改。日志中的每条记录都由一个唯一的日志序号(LSN)标识,事务的所有日志记录都链接在一起。

SQL Server系统对修改过的数据缓冲区的内容并不是立即写回磁盘,而是控制写入磁盘的时间,它将在缓冲区内修改过的数据页存入高速缓存一段时间后再写入磁盘,从而实现优化磁盘写入。将包含被修改过但尚未写入磁盘的数据的缓冲区页称为脏页,将脏缓冲区页写入磁盘称为刷新页。

对被修改过的数据页进行高速缓存时,要确保在将相应的内存日志映像写入日志文件之前没有刷新任何数据修改,否则将不能在需要时进行回滚。

第30页:保证能恢复所

为了保证能恢复所有对数据页的修改,SQL Server采用预写日志的方法,即将所有内存日志映像都在相应的数据修改前写入磁盘。只要所有日志记录都已刷新到磁盘,则即使在被修改的数据页未被刷新到磁盘的情况下,系统也能够恢复。这时系统恢复可以只使用日志记录,进行事务前滚或回滚,执行对数据页的修改。

SQL Server系统定期将所有脏日志和数据页刷新到磁盘,这就称为检查点。检查点从当前数据库的高速缓冲存储器中刷新脏数据和日志页,以尽量减少在恢复时必须前滚的修改量。SQL Server恢复机制能够通过检查点在检查事务日志时保证数据库的一致性,在对事务日志进行检查时,系统将从最后一个检查点开始检查事务日志,以发现数据库中所有数据的改变。

若发现有尚未写入数据库的事务,则将它们对数据库的改变写入数据库。

第31页:(1)进行安全检查

  • 进行安全检查。安全检查是系统的内部机制,是数据库恢复时的必要操作,它可以防止由于偶然的误操作而使用了不完整的信息或其他数据库备份来覆盖现有的数据库。当出现以下几种情况时,系统将不能恢复数据库:使用与被恢复的数据库名称不同的数据库名去恢复数据库;服务器上的数据库文件组与备份的数据库文件组不同;需恢复的数据库名或文件名与备份的数据库名或文件名不同,例如,当试图将northwind数据库恢复到名为accounting的数据库中,而accounting数据库已经存在时,那么SQL Server将拒绝此恢复过程。
  • 重建数据库。当从完全数据库备份中恢复数据库时,SQL Server将重建数据库文件,并把所重建的数据库文件置于备份数据库时这些文件所在的位置,所有的数据库对象都将自动重建,用户无须重建数据库的结构。在SQL Server中,恢复数据库的语句是RESTORE。

第32页:1.恢复数据库的准备

1.恢复数据库的准备(1)使用图形界面方式查看所有备份介质的属性。启动SQL Server Management Studio,在对象资源管理器中展开“服务器对象”,在其中的“备份设备”里面选择欲查看的备份介质,右击鼠标,(如图8.7所示),在弹出的快捷菜单中选择“属性”菜单项。图8.7查看备份介质的属性

第33页:图8.8 查看备份介质

在打开的“备份设备”窗口中单击“媒体内容”选项卡,如图8.8所示,将显示所选备份介质的有关信息,例如备份介质所在的服务器名、备份数据库名、备份类型、备份日期、到期日及大小等信息。图8.8查看备份介质的内容并显示备份介质的信息

第34页:(2)RESTORE HEADONLY

(2)使用RESTORE HEADONLY、RESTORE FILELISTONLY、RESTORE LABEL ONLY等语句可以得到有关备份介质更详细的信息。例如,RESTORE HEADERONLY语句的执行结果是在特定的备份设备上检索所有备份集的所有备份首部信息。

语法格式:RESTORE HEADERONLYFROM <backup_device>[ WITH[ { CHECKSUM | NO_CHECKSUM } ][ [ , ] { CONTINUE_AFTER_ERROR | STOP_ON_ERROR } ][ [ , ] FILE = file_number][ [ , ] MEDIANAME = { media_name | @media_name_variable } ][ [ , ] MEDIAPASSWORD = { mediapassword |@mediapassword_variable } ][ [ , ] PASSWORD = { password | @password_variable } ][ [ , ] REWIND ][ [ , ] { UNLOAD | NOUNLOAD } ]][;]

第35页:2.使用RESTORE语句

2.使用RESTORE语句进行数据库恢复使用RESTORE语句可以恢复用BACKUP命令所做的各种类型的备份,但是需要引起注意的是:对于使用完全恢复模式或大容量日志恢复模式的数据库,在大多数情况下,在完整恢复模式或大容量日志恢复模式下,SQL Server 2008要求先备份日志尾部,然后还原当前附加在服务器实例上的数据库。

“尾日志备份”可捕获尚未备份的日志(日志尾部),是恢复计划中的最后一个相关备份。除非RESTORE语句包含WITH REPLACE或WITH STOPAT子句,否则,还原数据库而不先备份日志尾部将导致错误。

第36页:尾日志备份与日志备份区别

与正常日志备份相似,尾日志备份将捕获所有尚未备份的事务日志记录,但尾日志备份与正常日志备份在下列几个方面有所不同:如果数据库损坏或离线,则可以尝试进行尾日志备份。仅当日志文件未损坏且数据库不包含任何大容量日志更改时,尾日志备份才会成功。

如果数据库包含要备份的、在记录间隔期间执行的大容量日志更改,则仅在所有数据文件都存在且未损坏的情况下,尾日志备份才会成功。尾日志备份可使用COPY_ONLY选项独立于定期日志备份进行创建。仅复制备份不会影响备份日志链。事务日志不会被尾日志备份截断,并且捕获的日志将包括在以后的正常日志备份中。

这样就可以在不影响正常日志备份过程的情况下进行尾日志备份,例如,为了准备进行在线还原。

第37页:数据库损坏

如果数据库损坏,尾日志可能会包含不完整的元数据,这是因为某些通常可用于日志备份的元数据在尾日志备份中可能会不可用。使用CONTINUE_AFTER_ERROR进行的日志备份可能会包含不完整的元数据,这是因为此选项将通知进行日志备份,而不考虑数据库的状态。在创建尾日志备份时,也可以同时使数据库变为还原状态。

使数据库离线可保证尾日志备份包含对数据库所做的所有更改,并且随后不对数据库进行更改。当需要对某个文件执行离线还原以便与数据库匹配时,或按照计划故障转移到日志传送备用服务器并希望切换回来时,会用到此操作。

第38页:(1)恢复整个数据库

(1)恢复整个数据库。当存储数据库的物理介质被破坏,或整个数据库被误删除或被破坏时,就要恢复整个数据库。在恢复整个数据库时,SQL Server系统将重新创建数据库及与数据库相关的所有文件,并将文件存放在原来的位置。语法格式。其他选项与之前介绍的BACKUP语句意义类似。

【例8.9】使用RESTORE语句

使用RESTORE语句从一个已存在的命名备份介质PXSCJBK1中恢复整个数据库PXSCJ。首先创建备份设备PXSCJBK1: USE master GO EXEC sp_addumpdevice 'disk', ' PXSCJBK1','E:\data\PXSCJBK1.bak'使用BACKUP命令对PXSCJ数据进行完全备份: BACKUP DATABASE PXSCJTO PXSCJBK1

第39页:图8.9 恢复整个数据库

恢复数据库的命令如下:RESTORE DATABASE PXSCJFROM PXSCJBK1WITH FILE=1, REPLACE执行结果如图8.9所示。图8.9恢复整个数据库

第40页:(2)恢复数据库的部分内容

(2)恢复数据库的部分内容。应用程序或用户的误操作如果无效更新或误删表格等,往往只影响到数据库的某些相对独立的部分。在这些情况下,SQL Server提供了将数据库的部分内容还原到另一个位置的机制,以使损坏或丢失的数据可复制回原始数据库。

语法格式:RESTORE DATABASE { database_name | @database_name_var }<files_or_filegroup> [ ,...n ][ FROM <backup_device> [ ,...n ] ]WITHPARTIAL, NORECOVERY[ , <general_WITH_options> [ ,...n ]| , <point_in_time_WITH_options—RESTORE_DATABASE>] [ ,...n ][;]其中,<files_or_filegroup>::={FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }| READ_WRITE_FILEGROUPS}

第41页:(3)恢复特定的文件

(3)恢复特定的文件或文件组。若某个或某些文件被破坏或被误删除,则可以从文件或文件组备份中进行恢复,而不必进行整个数据库的恢复。

语法格式:RESTORE DATABASE { database_name | @database_name_var }<file_or_filegroup> [ ,...n ][ FROM <backup_device> [ ,...n ] ]WITH{[ RECOVERY | NORECOVERY ][ , <general_WITH_options> [ ,...n ] ]} [ ,...n ][;]

第42页:(4)恢复事务日志

(4)恢复事务日志。使用事务日志恢复,可将数据库恢复到指定的时间点。

语法格式:RESTORE LOG { database_name | @database_name_var }[ <file_or_filegroup > [ ,...n ] ][ FROM <backup_device> [ ,...n ] ][ WITH{[ RECOVERY | NORECOVERY | STANDBY = {standby_file_name |@standby_file_name_var } ]| , <general_WITH_options> [ ,...n ]| , <replication_WITH_option>| , <point_in_time_WITH_options—RESTORE_LOG>} [ ,...n ]][;]

第43页:RESTORE LOG时间点恢复

其中,<point_in_time_WITH_options—RESTORE_LOG>::=| {STOPAT = { 'datetime' | @datetime_var }| STOPATMARK = { 'mark_name' | 'lsn:lsn_number }[ AFTER 'datetime' ]| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' } [ AFTER 'datetime' ]}执行事务日志恢复必须在进行完全数据库恢复以后。

以下语句是先从备份介质PXSCJBK1进行完全恢复数据库PXSCJ,再进行事务日志事务恢复(假设已经备份了PXSCJ数据库的事务日志到备份设备PXSCJLOGBK1中)。

RESTORE DATABASE PXSCJFROM PXSCJBK1WITH NORECOVERY, REPLACEGORESTORE LOG PXSCJFROM PXSCJLOGBK1

第44页:(5)恢复到数据库快照

(5)恢复到数据库快照。可以使用RESTORE语句将数据库恢复到创建数据库快照时的状态。此时恢复的数据库会覆盖原来的数据库。语法格式:RESTORE DATABASE { database_name | @database_name_var }FROM DATABASE_SNAPSHOT = database_snapshot_name

【例8.10】创建PXSCJ数据库

创建PXSCJ数据库的快照,并将数据库恢复到创建该快照时的状态。首先创建PXSCJ数据库的快照: CREATE DATABASE PXSCJ_1 ON(NAME=PXSCJ,FILENAME='E:\data\PXSCJ_1.mdf') AS SNAPSHOT OF PXSCJ GO 接着对数据库做一些修改,以确定数据库是否恢复。恢复数据库的语句如下: USE master GO RESTORE DATABASE PXSCJFROM DATABASE_SNAPSHOT='PXSCJ_1'

第45页:第1步:展开数据库目录

第1步:启动SQL Server Management Studio,在对象资源管理器中展开“数据库”,选择需要恢复的数据库。

第2步:如图8.10所示,选择“PXSCJ”数据库,右击鼠标,在弹出的快捷菜单中选择“任务”菜单项,在弹出的“任务”子菜单中选择“还原”菜单项,在弹出的“还原”子菜单中选择“数据库”菜单项,进入“还原数据库-PXSCJ”窗口。图8.10选择还原数据库

第46页:第3步:如图8.11所示

第3步:如图8.11所示,这里单击“源设备”后面的按钮,在打开的“指定备份”窗口中选择备份媒体为“备份设备”,单击“添加”按钮。在打开的“选择备份设备”对话框中,在“备份设备”栏的下拉菜单中选择需要指定恢复的备份设备。图8.11“还原数据库”窗口的“常规”选项卡

第47页:图8.12 指定备份设备

如图8.12所示,单击“确定”按钮,返回“指定备份”窗口,再单击“确定”按钮,返回“还原数据库-PXSCJ”窗口。图8.12指定备份设备

第48页:图8.13 选择备份集

第4步:选择完备份设备后,“还原数据库-PXSCJ”窗口的“选择用于还原的备份集”栏中会列出可以进行还原的备份集,在复选框中选中备份集,如图8.13所示。图8.13选择备份集

第49页:图8.14 还原数据库

第5步:在如图8.13所示窗口中单击最左边“选项”页,在窗口右边勾选“覆盖现有数据库”项,如图8.14所示,单击“确定”按钮,系统将进行恢复并显示恢复进度。图8.14还原数据库

第50页:启动SQL Server

启动SQL Server配置管理器的方法在第1章中已经介绍。进入SQL Server配置管理器后,双击SQL Server代理服务,弹出SQL Server代理的属性框,如图8.15所示,单击“启动”按钮,启动该服务后就可以使用“复制数据库向导”了。图8.15启动SQL Server Agent服务

第51页:也可以直接

也可以直接在对象资源管理器中启动SQL Server代理服务:在“对象资源管理器”窗口中右击“SQL Server代理”,选择“启动”选项,如图8.16所示。在弹出的“确认”对话框中单击“是”按钮即可。图8.16在“对象资源管理器”窗口中启动SQL Server代理服务

第52页:复制数据库向导

使用“复制数据库向导”复制数据库的具体步骤如下。第1步:启动SQL Server Management Studio,在“对象资源管理器”窗口中右击“管理”,选择“复制数据库”选项,打开“欢迎使用复制数据库向导”窗口,单击“下一步”按钮。

第2步:进入“选择源服务器”窗口,如图8.17所示,还可以选择身份验证方式,这里按照默认设置,单击“下一步”按钮。图8.17选择源服务器

第53页:第3步:进入

第3步:进入“选择目标服务器”窗口,目标服务器默认为本地服务器,也可以单击文本框后的按钮,在弹出的目标服务器窗口中选择网络服务器。这里不做修改,单击“下一步”按钮。第4步:进入“选择传输方法”窗口,这里选择默认的方法,单击“下一步”按钮。

第54页:图8.18 选择数据库

第5步:进入“选择数据库”窗口,这里选择要复制的数据库,如PXSCJ,在要选择的数据库前的复选框中打勾。如果要复制数据库,则在“复制”选项中打勾;如果要移动数据库,则在“移动”选项中打勾。如图8.18所示,单击“下一步”按钮。图8.18选择数据库

第55页:图8.19 配置目标数据库

第6步:进入“配置目标数据库”窗口,在目标数据库中可以改写目标数据库的名称,另外还可以修改目标数据库的逻辑文件和日志文件的文件名和路径,如图8.19所示。图8.19配置目标数据库

第56页:第7步:完成该向导

第7步:单击“下一步”按钮进入“配置包”窗口,这里按照默认设置,单击“下一步”按钮。第8步:进入“安排运行包”窗口,这里选择“立即运行”选项,单击“下一步”按钮。进入“完成该向导”窗口,单击“完成”按钮开始复制数据库。

第57页:附加数据库的操作步骤

在复制数据库文件时,一定要先通过SQL Server配置管理器停止SQL Server服务,然后才能复制数据文件,否则无法复制。假设有一个JSCJ数据库的数据文件和日志文件都保存在E盘根目录下,那么通过附加数据库的方法将数据库JSCJ导入本地服务器的具体步骤如下。

第1步:启动SQL Server Management Studio,在对象资源管理器中右击“数据库”,选择“附加”选项,进入“附加数据库”窗口,单击“添加”按钮,选择要导入的数据库文件JSCJ.mdf。

第58页:图8.20 附加数据库文件

第2步:选择后单击“确定”按钮,返回“附加数据库”窗口。此时“附加数据库”窗口中列出了要附加的数据库的原始文件和日志文件的信息,如图8.20所示。确认后单击“确定”按钮开始附加JSCJ数据库。成功后将会在“数据库”列表中找到JSCJ数据库。图8.20附加数据库文件的信息

顶部目录