详细讲解4种SQL Server 2008数据库备份类型

2012-4-29 2:27:00 来源:网络转载 浏览:5435
SQL Server 2008提供了高性能的备份和恢复功能,用户可以根据需求设计自己的备份策略,以保护存储在SQL Server 2008数据库中的关键数据。

SQL Server 2008提供了4种数据库备份类型:

1.完整数据库备份

完整数据库备份就是备份整个数据库。他备份数据库文件、这些文件的地址以及事务日志的某些部分(从备份开始时所记录的日志顺序号到备份结束时的日志顺序号)。这是任何备份策略中都要求完成的第一种备份类型,因为其他所有备份类型都依赖于完整备份。换句话说,如果没有执行完整备份,就无法执行差异备份和事务日志备份。

虽然从单独一个完全数据库备份就可以恢复数据库,但是完全数据库与差异备份和日志备份相比,在备份的过程中需要花费更多的空间和时间,所以完全数据库备份不需要频繁的进行,如果只使用完全数据库备份,那么进行数据恢复时只能恢复到最后一次完全数据库备份时的状态,该状态之后的所有改变都将丢失。

2.差异数据库备份

差异备份是指将从最近一次完全数据库备份以后发生改变的数据。如果在完整备份后将某个文件添加至数据库,则下一个差异备份会包括该新文件。这样可以方便地备份数据库,而无须了解各个文件。例如,如果在星期一执行了完整备份,并在星期二执行了差异备份,那么该差异备份将记录自星期一的完整备份以来已发生的所有修改。而星期三的另一个差异备份将记录自星期一的完整备份以来已发生的所有修改。差异备份每做一次就会变得更大一些,但仍然比完整备份小,因此差异备份比完整备份快。

3.事务日志备份

尽管事务日志备份依赖于完整备份,但他并不备份数据库本身。这种类型的备份只记录事务日志的适当部分,明确地说,自从上一个事务以来已经发生了变化的部分。事务日志备份比完整数据库节省时间和空间,而且利用事务日志进行恢复时,可以指定恢复到某一个事务,比如可以将其恢复到某个破坏性操作执行的前一个事务,完整备份和差异备份则不能做到。但是与完整数据库备份和差异备份相比,用日志备份恢复数据库要花费较长的时间,这是因为日志备份仅仅存放日志信息,恢复时需要按照日志重新插入、修改或删除数据。所以,通常情况下,事务日志备份经常与完整备份和差异备份结合使用,比如,每周进行一次完整备份,每天进行一次差异备份,每小时进行一次日志备份。这样,最多只会丢失一个小时的数据。

4.文件组备份

当一个数据库很大时,对整个数据库进行备份可能会花很多的时间,这时可以采用文件和文件组备份,即对数据库中的部分文件或文件组进行备份。

文件组是一种将数据库存放在多个文件上的方法,并允许控制数据库对象(比如表或视图)存储到这些文件当中的哪些文件上。这样,数据库就不会受到只存储在单个硬盘上的限制,而是可以分散到许多硬盘上,因而可以变得非常大。利用文件组备份,每次可以备份这些文件当中的一个或多个文件,而不是同时备份整个数据库。

文件组还可以用来加快数据访问的速度,因为文件组允许将表存放在一个文件上,而将对应的索引存放在另一个文件上。尽管这么做可以加快数据访问的速度,但也会减慢备份过程,因为必须将表和索引作为一个单元来备份。

笔者提示:为了使恢复的文件与数据库的其余部分保持一致,执行文件和文件组备份之后,必须执行事务日志备份。

SQL Server 2008包括3种恢复模型,其中每种恢复模型都能够在数据库发生故障的时候恢复相关的数据。不同的恢复模型在SQL Server备份、恢复的方式和性能方面存在差异,而且,采用不同的恢复模型对于避免数据损失的程度也不同。每个数据库必须选择三种恢复模型中的一种以确定备份数据库的备份方式。

1.简单恢复模型

对于小型数据库不经常更新数据的数据库,一般使用简单恢复模型。使用简单恢复模型可以将数据库恢复到上一次的备份。简单还原模型的优点在于日志的存储空间较小,能够提高磁盘的可用空间,而且也是最容易实现的模型。但是,使用简单恢复模型无法将数据库还原到故障点或特定的即时点。如果要还原到这些即时点,则必须使用完全恢复模型或大容量日志记录恢复模型。

2.完全恢复模型

当从被损坏的媒体中完全恢复数据有着最高优先级时,可以使用完全恢复模型。该模型使用数据库的复制和所有日志信息来还原数据库。SQL Server可以记录数据库的所有更改,包括大容量操作和创建索引。如果日志文件本身没有损坏,则除了发生故障时正在进行的事务,SQL Server可以还原所有的数据。

在完全恢复模型中,所有的事务都被记录下来,所以可以将数据库还原到任意时间点。SQL Server 2005支持将命名标记插入到事务日志中的功能,可以将数据库还原到这个特定的标记。

记录事务标记要占用日志空间,所以应该只对那些在数据库恢复策略中扮演重要角色的事务使用事务标记。该模型的主要问题是日志文件较大以及由此产生的较大的从存储量和性能开销。

3.大容量日志记录恢复模型

与完全恢复模型相似,大容量日志记录恢复模型使用数据库和日志备份来恢复数据库。该模型对某些大规模或者大容量数据操作(比如INSERT INTO、CREATE INDEX、大批量装载数据、处理大批量数据)时提供最佳性能和最少的日志使用空间。在这种模型下,日志只记录多个操作的最终结果,而并非存储操作的过程细节,所以日志尺寸更小,大批量操作的速度也更快。如果事务日志没有受到破坏,除了故障期间发生的事务以外,SQL Server能够还原全部数据,但是,由于使用最小日志的方式记录事务,所以不能恢复数据库到特定即时点。

创建备份设备

备份设备是用来存储数据库、事务日志或者文件和文件组备份的存储介质,所在执行备份数据之前,首先来介绍以下如何创建备份设备。

在SQL Server 2008中创建设备的方法有两种:一是在SQL Server Management Studio中使用现有命令和功能,通过方便的图形化工具创建,二是通过使用系统存储过程sp_addumpdevice创建。下面将对这两种创建备份设备的方法分别阐述。

1.使用SQL Server Management Studio管理器创建备份设备

使用Microsoft SQL Server Management Studio管理器创建备份设备的操作步骤如下:

(1)在【对象资源管理器】中,单击服务器名称以展开服务器树。

(2)展开【服务器对象】节点,然后用鼠标右键单击【备份设备】选项。

(3)从弹出的菜单中选择【新建备份设备】命令,打开【备份设备】窗口。

(4)在【备份设备】窗口,输入设备名称并且指定该文件的完整路径,这里创建一个名称为“网店购物系统备份”的备份设备。如图10-1所示。

图10-1  创建备份设备

(5)单击【确定】按钮,完成备份设备的创建。展开【备份设备】节点,就可以看到刚刚创建的名称为“网店购物系统备份”备份设备。

2.使用系统存储过程SP_ADDUMPDEVICE创建备份设备

除了使用图形化工具创建备份设备外,还可以使用系统存储过程SP_ADDUMPDEVICE来添加备份设备,这个存储过程可以添加磁盘和磁带设备。SP_ADDUMPDEVICE的基本语法如下:

SP_ADDUMPDEVICE [ @devtype = ] 'device_type'

        , [ @logicalname = ] 'logical_name'

        , [ @physicalname = ] 'physical_name'

    [ , { [ @cntrltype = ] controller_type |

          [ @devstatus = ] 'device_status' }

    ]

下面对上述语法中的各参数进行简单的说明:

[ @devtype = ] 'device_type'  该参数指备份设备的类型。device_type的数据类型为varchar(20),无默认值,可以是disk、tape和pipe。其中,disk用于指硬盘文件作为备份设备;tape用于指Microsoft Windows支持的任何磁带设备。pipe是指使用命名管道备份设备。

[ @logicalname = ] 'logical_name'  该参数指在BACKUP和RESTORE语句中使用的备份设备的逻辑名称。logical_name的数据类型为sysname,无默认值,且不能为NULL。

[ @physicalname = ] 'physical_name'  该参数指备份设备的物理名称。物理名称必须遵从操作系统文件名规则或者网络设备的通用命名约定,并且必须包含完整路径。physical_name的数据类型为nvarchar(260),无默认值,且不能为NULL。

[ @cntrltype = ] 'controller_type'  如果cntrltype的值是2,则表示是磁盘;如果cntrltype值是5,则表示是磁带。

[ @devstatus = ] 'device_status'  devicestatus如果是noskip,表示读ANSI磁带头,如果是skip,表示跳过ANSI磁带头。

例如,创建一个名称为Test的备份设备,就可以使用如下代码:

USE master

GO

EXEC sp_addumpdevice 'disk','Test','D:\test.bak'

创建本地磁带备份设备TapeTest,可以使用如下语句:

USE master

GO

EXEC SP_ADDUMPDEVICE 'tape','tapebackup','\\.\tape0 '

管理备份设备

在Microsoft SQL Server 2008系统中,创建了备份设备以后就可以通过系统存储过程、Transact-SQL语句或者图形化界面查看备份设备的信息,或者把不用的备份设备删除等。

1.查看备份设备

可以通过两种方式查看服务器上的所有备份设备,一种是通过使用SQL Server Management Studio图形化工具,另一种是通过系统存储过程SP_HELPDEVICE。

使用SQL Server Management Studio工具

首先介绍使用SQL Server Management Studio图形化工具查看所有备份设备,操作步骤如下:

(1)在【对象资源管理器】中,单击服务器名称以展开服务器树。

(2)展开【服务器对象】|【备份设备】节点,就可以看到当前服务器上已经创建的所有备份设备,如图10-2所示。

10-2  查看备份设备

使用系统存储过程SP_HELPDEVICE

使用系统存储过程SP_HELPDEVICE也可以查看服务器上每个设备的相关信息,如图11-3所示。

图10-3  使用系统存储过程查看备份设备

2.删除备份设备

如果不再需要的备份设备,可以将其删除,删除备份设备后,其上的数据都将丢失,删除备份设备也有两种方式,一种是使用SQL Server Management Studio图形化工具,另一种是使用系统存储过程SP_DROPDEVICE。

1)使用SQL Server Management Studio工具

使用SQL Server Management Studio图形化工具,可以删除备份设备。例如将备份设备Test删除,操作步骤如下:

(1)在【对象资源管理器】中,单击服务器名称以展开服务器树。

(2)展开【服务器对象】|【备份设备】节点,右击要删除的备份设备Test,在弹出的命令菜单中选择【删除】命令,打开【删除对象】窗口。

(3)在【删除对象】窗口单击【确定】按钮,即完成对该备份设备的删除操作。

2)使用系统存储过程SP_DROPDEVICE

使用SP_DROPDEVICE系统存储过程将服务器中备份设备删除,并能删除操作系统文件。具体语句如下所示:

SP_DROPDEVICE ‘备份设备名’ [,‘DELETE’]

上述语句中,如果指定了DELETE参数,则在删除备份设备的同时删除他使用的操作文件。例如删除名称为Test的备份设备,基于可以使用如下代码:

EXEC SP_DROPDEVICE 'Test'

备份数据

通过前面知识的介绍,大家知道,备份数据的类型可以分为四种,在创建每一种备份时,所用到的操作都不相同。因此,本节我们重点围绕这四种类型,展开详细介绍。

1  创建完整备份

完整备份是指包含所有数据文件的完整映像的任何备份。完整备份会备份所有数据和足够的日志,以便恢复数据。由于完整备份是任何备份策略中都要求完成的第一种备份类型,所以首先介绍如何使用SQL Server Management Studio图形化工具和BACKUP语句进行完整数据库备份。

1.使用SQL Server Management Studio工具创建完整备份

例如,需要对“网店购物系统”进行一次完整备份,使用SQL Server Management Studio图形化工具对其进行完整备份的操作步骤如下:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)在对象资源管理器中,展开【数据库】节点,右击【网店购物系统】数据库,在弹出的命令菜单中选择【属性】,打开【数据库属性】窗口。

(3)在【选项】页面,确保恢复模式为完整恢复模式,如图10-4所示。

图10-4  选择恢复模式

(4)单击【确定】按钮应用修改结果。

(5)右击数据库“网店购物系统”,从弹出的菜单中选择【任务】|【备份】命令,打开【备份数据库】窗口,如图10-5所示。

图10-5  备份数据库

(6)在【备份数据库】窗口中,从【数据库】下拉菜单中选择“网店购物系统”数据库;【备份类型】项选择“完整”,保留【名称】文本框的内容不变。

(7)设置备份到磁盘的目标位置,通过单击【删除】按钮,删除已存在默认生成的目标,然后单击【添加】按钮,打开【选择备份目标】对话框,启用【备份设备】选项,选择以前建立的“网店购物系统备份”备份设备,如图10-6所示。

图10-6  选择备份设备

(8)单击【确定】按钮返回【备份数据库】窗口,就可看到【目标】下面的文本框将增加一个“网店购物系统备份”备份设备。

(9)单击【选项】选项,打开【选项】页面,启用【覆盖所有现有备份集】选项,该选项用于初始化新的设备或覆盖现在的设备;选中【完成后验证备份】复选框,该选项用来核对实际数据库与备份副本,并确保他们在备份完成之后一致。具体设置情况如图9-8所示。

图10-7  【选项】页面

(10)单击【确定】按钮,完成对数据库的备份。完成备份后将弹出备份完成对话框。

现在已经完成了数据库“网店购物系统”的一个完整备份。为了验证是否真的备份完成,下面来检查一下:

(1)在SQL Server Management Studio的【对象资源管理器】窗口中,展开【服务器对象】节点下的【备份设备】节点。

(2)右击备份设备【网店购物系统备份】,从弹出的右键菜单中选择【属性】窗口。

(3)选中【媒体内容】选项,打开【媒体内容】页面,可以看到刚刚创建的【网店购物系统】数据库的完整备份。如图10-8所示。

图10-8  查看备份设备的内容

2.使用BACKUP语句备份数据库

前面介绍了使用图形化工具备份数据库,下面再简单的介绍一下如何使用BACKUP命令来备份数据库。对数据库进行完整备份的语法如下:

BACKUP DATABASE database_name

TO <backup_device> [    n]

[WITH

[[,] NAME=backup_set_name]

[ [,] DESCRIPITION=’TEXT’]

[ [,] {INIT | NOINIT } ]

[ [,]{ COMPRESSION | NO_COMPRESSION }

]

下面是上面一些参数选项的说明:

database_name  指定了要备份的数据库。

backup_device  为备份的目标设备,采用“备份设备类型=设备名”的形式。

WITH子句  指定备份选项,这里仅给出两个,更多的备份选项可以参考SQL Sever联机丛书。

NAME=backup_set_name  指定了备份的名称。

DESCRIPITION='TEXT'  给出了备份的描述。

INIT|NOINIT  INIT表示新备份的数据覆盖当前备份设备上的每一项内容,即原来在此设备上的数据信息都将不存在,NOINIT表示新备份的数据添加到备份设备上已有的内容的后面。

COMPRESSION|NO_COMPRESSION  COMPRESSION表示启用备份压缩功能,NO_COMPRESSION表示不启用备份压缩功能。

例如,对数据库“网店购物系统”做一次完整备份,备份设备为以前创建好的“网店购物系统备份”本地磁盘设备,并且此次备份覆盖以前所有的备份。使用BACKUP命令创建备份,可以使用如下代码:

BACKUP DATABASE 网店购物系统

TO DISK='网店购物系统备份'

WITH INIT,

NAME='网店购物系统 完整 备份',

DESCRIPTION='this is the full backup of 网店购物系统'

执行上述代码,从图10-9的结果中可以看出,完整备份操作已经成功完成。

图10-9  使用BACKUP语句备份数据库

2  创建差异备份

当数据量十分庞大时,执行一次完成备份需要耗费非常多时间和空间,因此完整备份不能频繁进行,创建了数据库的完整备份以后,如果数据库从上次备份以来只修改了很少的数据时,比较适合使用差异备份。下面将介绍创建差异数据库备份的方法。

1.使用SQL Server Management Studio工具

创建差异备份的过程与创建完整备份的过程几乎相同,下面使用SQL Server Management Studio在上一节创建的永久备份设备“网店购物系统备份”上创建一个数据库“网店购物系统”的一个差异备份。操作过程如下:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)在对象资源管理器中,展开【数据库】节点,右击【网店购物系统】数据库,在弹出的命令菜单中选择【任务】|【备份】命令,打开【备份数据库】窗口。

(3)在【备份数据库】窗口,从【数据库】下拉菜单中选择“网店购物系统”数据库;【备份类型】项选择“差异”;保留【名称】文本框的内容不变;在【目标】项下面确保列了【网店购物系统备份】设备。如图10-10所示。

图10-10  备份数据库

(4)单击【选项】选项,打开【选项】页面,启用【追加到现有备份集】选项,以免覆盖现有的完整备份;选中【完成后验证备份】复选框,该选项用来核对实际数据库与备份副本(或者称为拷贝),并确保他们在备份完成之后一致。具体设置情况如图11-11所示。

图10-11  差异备份的【选项】页面

(5)完成设置后,单击【确定】开始备份,完成备份将弹出备份完成窗口。

现在已经完成了数据库“网店购物系统”的一个差异备份。为了验证是否真的备份完成,下面来检查一下:

(1)在SQL Server Management Studio的【对象资源管理器】窗口中,展开【服务器对象】节点下的【备份设备】节点。

(2)右击备份设备【网店购物系统备份】,从弹出的右键菜单中选择【属性】窗口。

(3)选中【媒体内容】选项,打开【介质内容】页面,可以看到刚刚创建的“网店购物系统”数据库的差异备份。如图10-8所示。

图10-12  查看备份设备内容

2.使用BACKUP语句创建差异备份

创建差异备份也可以使用BACKUP语句,进行差异备份的语法与完整备份的语法相似,进行差异备份的语法如下所示:

BACKUP DATABASE database_name

TO <backup_device> [    n]

WITH

DIFFERENTIAL

[[,] NAME=backup_set_name]

[ [,] DESCRIPITION=’TEXT’]

[ [,] {INIT | NOINIT } ]

[ [,]{ COMPRESSION | NO_COMPRESSION }

]

其中WITH DIFFERENTIAL子句指明了本次备份是差异备份。其他参数与完全备份参数安全一样,在此就不在重复。

例如,对数据库“网店购物系统”做一次差异备份,就可以使用如下代码:

BACKUP DATABASE 网店购物系统

TO DISK='网店购物系统备份'

WITH DIFFERENTIAL,

NOINIT,

NAME='网店购物系统差异备份',

DESCRIPTION='this is differential backup of 网店购物系统on disk'

执行上述代码,从图10-13中的结果中可以看出,数据库“网店购物系统”的差异备份已经创建完成。

图10-13  执行差异备份

 

3  创建事务日志备份

在前面小节中已经执行了完整备份和差异备份,但是如果没有执行事务日志备份,则数据库可能无法正常工作。

尽管事务日志备份信赖于完整备份,但它并不备份数据库本身。这种类型的备份只记录事务日志的适当部分,明确地说,自从上一个事务以来已经发生了变化的部分。使用事务日志备份,可以将数据库恢复到故障点或特定的时间点。一般情况下,事务日志备份比完整备份和差异备份使用的资源少。因此,可以更频繁地创建事务日志备份,减少数据丢失的风险。在Microsoft SQL Server 2008系统中日志备份有三种类型:纯日志备份、大容量操作日志备份和尾日志备份。具体情况如表10-1所示。

 

表10-1  事务日志类型

日志备份类型

说明

纯日志备份

仅包含一定间隔的事务日志记录而不包含在大容量日志恢复模式下执行的任何大容量更改的备份。

大容量操作日志备份

包含日志记录以及由大容量操作更改的数据页的备份。不允许对大容量操作日志备份进行时点恢复。

尾日志备份

对可能已损坏的数据库进行的日志备份,用于捕获尚未备份的日志记录。尾日志备份在出现故障时进行,用于防止丢失工作,可以包含纯日志记录或大容量操作日志记录。

只有当启动事务日志备份序列时,完整备份或完整差异备份才必须与事务日志备份同步。每个事务日志备份的序列都必须在执行完整备份或完整差异备份之后启动。

执行事务日志备份至关重要。除了允许您还原备份事务外,日志备份将截断日志以删除日志文件中已备份的日志记录。即使经常备份日志,日志文件也会填满。

连续的日志序列称为“日志链”。日志链从数据库的完整备份开始。通常情况下,只有当第一次备份数据库或者从简单恢复模式转变到完整或大容量恢复模式时,需要进行完整备份,才会启动新的日志链。

1.使用SQL Server Management Studio工具创建备份

创建事务日志备份的过程与创建完整备份的过程也基本相同,下面使用SQL Server Management Studio工具在前面创建的永久备份设备“网店购物系统备份”上创建一个数据库“网店购物系统”的一个事务日志备份。操作过程如下:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)在对象资源管理器中,展开【数据库】节点,右击【网店购物系统】数据库,在弹出的命令菜单中选择【任务】|【备份】命令,打开【备份数据库】窗口。

(3)在【备份数据库】窗口,从【数据库】下拉菜单中选择【网店购物系统】数据库;【备份类型】项选择“事务日志”;保留【名称】文本框的内容不变;在【目标】项下面确保列了【网店购物系统系统备份】设备。如图10-14所示。

图10-14  创建事务日志备份

(4)单击【选项】选项,打开【选项】页面,启用【追加到现有备份集】选项,以免覆盖现有的完整和差异备份;选中【完成后验证备份】复选框,该选项用来核对实际数据库与备份副本(或者称为拷贝),并确保他们在备份完成之后一致,并且选择【截断事务日志】选项。具体设置情况如图11-15所示。

图10-15  事务日志备份的【选项】页面

(5)完成设置后,单击【确定】开始备份,完成备份将弹出备份完成窗口。

现在已经完成了数据库【网店购物系统】的一个事务日志备份。为了验证是否真的备份完成,下面来检查一下:

(1)在SQL Server Management Studio的【对象资源管理器】窗口中,展开【服务器对象】节点下的【备份设备】节点。

(2)右击备份设备【网店购物系统备份】,从弹出的右键菜单中选择【属性】窗口。

(3)选中【介质内容】选项,打开【介质内容】页面,可以看到刚刚创建的【网店购物系统】数据库的事务日志备份。如图10-16所示。

图10-16  查看事务日志备份

2.使用BACKUP语句创建事务日志备份

使用BACKUP语句创建事务日志备份,语法格式如下:

BACKUP LOG database_name

TO <backup_device> [    n]

WITH

 [[,] NAME=backup_set_name]

[ [,] DESCRIPITION=’TEXT’]

[ [,] {INIT | NOINIT } ]

[ [,]{ COMPRESSION | NO_COMPRESSION }

]

其中LOG指定仅备份事务日志。该日志是从上一次成功执行的日志备份到当前日志的末尾。必须创建完整备份,才能创建第一个日志备份。其他的各参数与完整备份语法中各参数完全相似,这里也不再重复。

例如,对数据库【体育场管理系统】做事务日志备份,要求追加到现有的备份设备“体育场管理系统备份”上。完成上述备份,可以使用如下代码:

BACKUP LOG 网店购物系统

TO DISK='网店购物系统备份'

WITH NOINIT,

NAME='网店购物系统事务日志备份',

DESCRIPTION='this is transaction backup of 网店购物系统on disk'

执行上述代码,从图10-17中的结果中可以看出,数据库【体育场管理系统】的事务日志备份已经完成。

图10-17  事务日志备份

当SQL Server完成日志备份时,自动截断数据库事务日志中不活动的部分,所谓不活动的部分是指已经完成的事务日志,这些事务日志已经被备份起来了,所以可以截断。事务日志被截断后,释放出空间可以被重复使用,这样避免了日志文件的无限增长。

4  创建文件组备份

现在,有越来越多的公司拥有了TB级的数据库,这些数据库称为超大型数据库。对于超大型数据库,如果每次都执行完整数据备份不切实际,应当执行数据库文件或文件组备份。

文件组是一种将数据库存放在多个文件上的方法,并允许控制数据库对象(比如表或视图)存储到这些文件当中的哪些文件上。这样,数据库就不会受到只存储在单个硬盘上的限制,而是可以分散到许多硬盘上,因而可以变得非常大。利用文件组备份,每次可以备份这些文件当中的一个或多个文件,而不是同时备份整个数据库。

在执行文件组备份之前,首先为数据库【电子书查询系统】添加一个新文件组,操作步骤如下:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)在对象资源管理器中,展开【数据库】节点,右击【电子书查询系统】数据库,在弹出的命令菜单中选择【属性】命令,打开数据库属性窗口。

(3)单击【文件组】选项,打开【文件组】选项页面,然后单击【添加】按钮,在【名称】文本框中输入bei_fen,如图10-18所示。

图10-18  添加新文件组

(4)单击【文件】选项,打开【文件】选项页面,然后单击【添加】按钮,为【电子书查询系统】数据库创建一个新的数据文件,并且设置该数据文件所属的文件组为bei_fen,具体如图10-19所示。

图10-19  添加新数据文件

(5)单击【确定】按钮完成对数据库的更改。

在SQL Server 2008中,执行文件组备份的方式有两种,使用SQL Server Management Studio工具和使用BACKUP语句。下面将分别对这两种方式进行阐述。

1.使用SQL Server Management Studio工具

使用SQL Server Management Studio工具执行文件组备份的具体步骤如下所示:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)在对象资源管理器中,展开【数据库】节点,右击【电子书查询系统】数据库,在弹出的命令菜单中选择【任务】|【备份】命令,打开【备份数据库】窗口。

(3)在【备份数据库】窗口的备份组件下选择【文件和文件组】就打开【选择文件和文件组】对话框,如图10-20所示。

图10-20  选择文件组

(4)在【选择文件和文件组】对话框中,选择要备份的文件和文件组。单击【确定】按钮返回。

(5)在【备份数据库】窗口的【常规】页面,选择数据库为【电子书查询系统】,备份类型为“完整”,并选择备份设备,具体设置如图10-21所示。

图10-21  文件组备份【常规】选项

(6)选中【选项】选项,打开【选项】页面,启用【追加到现有备份集】选项,以免覆盖现有的完整备份;选择【完成后验证备份】选项即可。

(7)设置完成后,单击【确定】按钮开始备份,完成后将弹出成功消息。

创建文件组备份以后,就可以验证文件组是否备份成功。查看备份设备“电子书查询系统备份”的介质内容,查看结果如图10-22所示。可以看到刚刚创建【电子书查询系统】数据库的文件组备份已经创建成功。

图10-22  查看文件组备份

2.使用BACKUP语句创建文件组备份

可以使用BACKUP语句对文件组备份,具体的语法如下所示:

BACKUP DATABASE database_name

< file_or_filegroup > [    n]

TO < backup_device > [    n]

WITH options

其中file_or_filegroup指定了要备份的文件或文件组,如果是文件,则写作“FILE=逻辑文件名”;如果是文件组,则写作“FILEGROUP=逻辑文件组名”。WITH options用于指定备份选项,与前几种备份设备类型相同。

比如将数据库【电子书查询系统】中刚添加的文件组second备份到本地磁盘备份设备“电子书查询系统备份”,可以使用如下语句:

BACKUP DATABASE 电子书查询系统

FILEGROUP='second'

TO DISK='电子书查询系统备份'

WITH

DESCRIPTION='this the filegroup backup of 电子书查询系统'

5  备份压缩

数据库执行备份操作,需要占用一定的磁盘空间。如果公司的数据库非常庞大,那么对数据库的备份就需要的空间将会十分惊人。对于数据库管理员来说,这是一件十分头疼的事情。幸运的是,在SQL Server 2008中新增了数据压缩功能。通常,数据压缩总是和节约硬盘、更小的物理文件、备份次数的减少联系在一起。而对于SQL Server 2008的数据压缩而言,主要的目的是实际的表的尺寸的减小。数据压缩的某些好处包括以下几点:

通过减少I/O和提高缓存命中率来提升查询性能

提供对真实DW实际数据2倍到7倍的压缩比率

和其他特点是正交的

对数据和索引都可用

在SQL Server 2008中,默认情况下不对备份进行压缩,如果需要的话,就可以进行具体的配置,启用备份压缩功能。

1.在服务器上配置备份压缩

在数据库引擎服务器上,可以对默认的备份压缩功能进行修改,具体的步骤如下所示:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)右击【服务器】,在弹出的命令菜单中选择【属性】,打开【服务器属性】窗口。

(3)单击【数据库设置】选项,在【数据库设置】页面启用【压缩备份】复选框。如图10-23所示。

图10-23  启用压缩备份

(4)单击【确定】按钮,完成对服务器的配置。

2.在备份数据库时启用备份压缩功能

除了在服务器上进行配置之外,还可以在用户备份数据库的时候,选择“压缩备份”选项,如图10-24所示。

图10-24  启用压缩备份

当然使用BACKUP语句的WITH COMPRESSION选项,也可以实现压缩备份的功能,例如在创建数据库【电子书查询系统】的完整备份时候启用压缩备份功能,就可以使用以下代码:

BACKUP DATABASE 电子书查询系统

TO DISK='电子书查询'

WITH INIT,COMPRESSION

恢复数据

恢复数据库,就是让数据库根据备份的数据回到备份时的状态。当恢复数据库时,SQL Server会自动将备份文件中的数据全部拷贝到数据库,并回滚任何未完成的事务,以保证数据库中的数据的完整性。

1  常规恢复

恢复数据前,管理员应当断开准备恢复的数据库和客户端应用程序之间的一切连接,此时,所有用户都不允许访问该数据库,并且执行恢复操作的管理员也必须更改数据库连接到master或其他数据库,否则不能启动恢复进程。

在执行任何恢复操作前,用户要对事务日志进行备份,这样有助于保证数据的完整性。如果用户在恢复之前不备份事务日志,那么用户将丢失从最近一次数据库备份到数据库脱机之间的数据更新。

使用SQL Server Management Studio工具恢复数据库的操作步骤如下:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)在对象资源管理器中,展开【数据库】节点,右击【网店购物系统】数据库,在弹出的命令菜单中选择【任务】|【还原】|【数据库】命令,打开【还原数据库】窗口。

(3)在【还原数据库】窗口中选中【源设备】单选按钮,然后单击 弹出一个【指定备份】对话框,在【备份媒体】选项中选择【备份设备】选项,然后单击【添加】按钮,选择之前创建的“网店购物系统备份”备份设备,如图10-25所示。

图10-25  选择备份设备

(4)选择完成后,单击【确定】按钮返回。在【还原数据库】窗口,就可以看到该备份设备中的所有的数据库备份内容,复选【选择用于还原的备份集】下面的“完整”、“差异”和“事务日志”3种备份,可这使数据库恢复到最近一次备份的正确状态。如图10-26所示。

图10-26  选择备份集

(5)如果还需要恢复别的备份文件,需要选择RESTORE WITH NORECOVERY选项,恢复完成后,数据库会显示处于正在还原状态,无法进行操作,必须到最后一个备份还原为止。单击【选项】,在【选项】页面选择RESTORE WITH NORECOVERY选项,如图10-27所示。

图10-27  设置恢复状态

(6)单击【确定】按钮,完成对数据库的还原操作。还原完成弹出还原成功消息对话框。

 

2  时间点恢复

在SQL Server 2008中进行事务日志备份时时候,不仅给事务日志中的每个事务标上日志号,还给他们都标上一个时间。这个时间与RESTORE语句的STOPAT从句结合起来,允许将数据返回到前一个状态。但是,在使用这个过程时需要记住两点:

这个过程不适用于完整与差异备份,只适用于事务日志备份。

将失去STOPAT时间这后整个数据库上所发生的任何修改。

例如一个数据库每天有大量的数据,每天12点都会定时做事务日志备份,10:00的时候服务器出现故障,误清除了许多重要的数据。通过对日志备份的时间点恢复,可以把时间点设置在10:00:00,既可以保存10:00:00之前的数据修改,又可以忽略10:00:00之后的错误操作。

使用SQL Server Management Studio工具按照时间点恢复数据库的操作步骤如下:

(1)打开SQL Server Management Studio工具,连接服务器。

(2)在对象资源管理器中,展开【数据库】节点,右击【体育场管理系统】数据库,在弹出的命令菜单中选择【任务】|【还原】|【数据库】命令,打开【还原数据库】窗口。

(3)单击【目标时间点】文本框后面的【选项】按钮 ,打开【时点还原】窗口,启用【具体日期和时间】选项,输入具体时间10:00:00,如图10-30所示。

图10-30  设置时点还原的日期和时间

(4)设置完成后,单击【确定】按钮返回。然后还原备份,设置时间以后的操作将会被还原。

复制数据库

数据库复制是企业级分布式数据库用到的重要而强大的技术。通过他可以在企业内多台服务器上分布式地存储数据、执行存储过程。SQL Server 2008中的复制(Replacation)技术使企业的数据可以分布在局域网、广域网甚至因特网上的多台服务器上,并能实现这些分布式数据的一致性。

SQL Server 2008中为开发式应用提供了三种类型的复制模式:快照复制(Snapshot)、事务复制(Transaction)和合并复制(Merge)。下面是基于“出版/订阅”的复制模型结构来介绍下面的三类复制模式。该模型由出版者、分发者、订阅者、出版物、文章和订阅物等几个元素组成。

1.快照复制

快照复制就是在某一时刻对出版数据进行一次“照相”,生成一个描述出版数据库中数据瞬时状态的静态文件,最后在规定时间将其复制到订购者数据库。快照复制并不像事务复制那样要不断地监视、跟踪在出版数据库中发生的数据变化,他所复制的内容不是INSERT、UPDATE、DELETE语句(事务复制的特征),也不是仅限于那些被修改数据(合并复制的特征)。他实际上是对订购数据库进行一次阶段性的表刷新,把所有出版数据库中的数据从源数据库送至目标数据库,而不仅仅是那些发生了变化的数据。如果论文很大,那么要复制的数据就很多,因此对网络资源需求较高,不仅要有较快的传输速度,而且要保证传输的可靠性。

快照复制是最为简单的一种复制类型,能够在出版者和订购者之间保证事务的潜在一致性。快照复制的执行仅需要快照代理和分发代理。快照代理准备快照文件(包括出版表的数据文件和描述文件)并将其存储在分发者的快照文件夹中,除此之外快照代理还要在分发者的分发数据库中跟踪同步作业。分发代理将在分发数据库中的快照作业分发至订购者服务器的目的表中。分发数据库仅用于复制而不包括任何用户表。

2.事务复制

由于事务复制要不断地监视源数据库的数据变化,所以与快照复制相比,其服务器负载相应要重。在事务复制中,当出版数据库发生变化时,这种变化就会被立即传递给订购者,并在较短时间内完成(几秒或更短),而不是像快照复制那样要经过很长一段时间间隔。因此,事务复制是一种几近实时地从源数据库向目标数据库分发数据的方法。由于事务复制的频率较高,所以必须保证在订购者与出版者之间要在可靠的网络连接。

事务复制只允许出版者对复制数据进行修改(若设置了立即更新订购者选项,则允许订购者修改复制数据),而不像合并复制那样,所有的节点(出版者和订购者)都被允许修改复制数据,因此事务复制保证了事务的一致性。他所实现的事务一致性介于立即事务一致性和潜在事务一致性之间。

3.合并复制

合并复制作为一种从出版者向订购者分发数据方法。允许出版者和订购者对出版数据进行修改,而不管订购者与出版者是相互连接或断开,然后当所有(或部分)节点相连时便合并发生在各个节点的变化。

在合并复制中,每个节点都独立完成属于自己的任务,不像事务复制和快照复制那样订购者与出版者之间要相互连接,合并复制完全不必连接到其他节点,也不必使用MS DTC来实现两阶段提交,就可以在多个节点对出版进行修改。只是在某一时刻才将该节点与其他节点相连(此时所指的其他节点并不一定指所有其他节点),然后将所发生的数据变化复制到这些相连节点的数据库中。如果在复制时因更新同一数据而发生冲突,则数据的最终结果并不总是出版者修改后的结果,也不一定包含在某一节点上所做的所有修改。因为各节点都有自主权,都可以对出版物(复制数据)进行修改,这样在按照所设定的冲突解决规则对冲突处理之后,数据库最终的结果往往是包含了多个节点的修改。

(0)
(0)