《数据库的备份与还原.ppt》由会员分享,可在线阅读,更多相关《数据库的备份与还原.ppt(41页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、数据库原理与应用教程数据库原理与应用教程SQL Server第第13章数据库的备份与还原章数据库的备份与还原 911事件发生前,约有350家企业在该楼中工作。一年后,再回到世贸大楼的公司变成了150家,2003年,国内某电信运营商的计费存储系统发生两个小时的故障,造成400多万元的损失。这些还不包括导致的无形资产损失。统计数字表明,在经历大型灾难而导致系统停运的公司中有2/5再也没有恢复运营,剩下的公司中也有1/3在两年内破产。数据丢失由于各种各样的原因系统硬件网络故障机房断电火灾地震等原因而导致的数据丢失给企业带来的灾害是无法估量的。因此,如何有效防止数据丢失将是一项意义重大的工作,本章将学
2、习如何进行数据库的备份与恢复,从而去有效地保护数据。数据库的备份与恢复一是制作一个数据库的副本,即把一个数据库备份下来,当数据库损坏或系统崩溃时可以将过去制作的备份还原到服务器中,以保证数据的安全性。二是在不同的数据库服务器之间移动数据库,即把一个数据库服务器上的数据库备份下来,然后恢复到另外一个数据库服务器中。此外,还可以在SQL Server 2005与其它数据格式文件之间进行数据交换。第第13章数据库的备份与还原章数据库的备份与还原13.1数据库备份概述数据库备份概述数据库备份就是在某种介质上数据库备份就是在某种介质上(磁盘、磁带等磁盘、磁带等)创建完整数据库创建完整数据库(或者其中一部
3、分或者其中一部分)的的副本副本,并,并将所有的数据项都复制到备份集,以便在数据将所有的数据项都复制到备份集,以便在数据库遭到破坏时能够恢复数据库。库遭到破坏时能够恢复数据库。执行备份操作的权限许可:执行备份操作的权限许可:系统管理员系统管理员数据库所有者数据库所有者数据库备份执行者数据库备份执行者第第13章数据库的备份与还原章数据库的备份与还原13.1.1数据库数据库备份计划备份计划创建备份的目的是为了可以恢复已损坏的创建备份的目的是为了可以恢复已损坏的数据库。数据库。但是,备份和还原数据需要在特定的环境但是,备份和还原数据需要在特定的环境中进行,并且必须使用一定的资源。因此,中进行,并且必须
4、使用一定的资源。因此,在备份数据库之前,需要对在备份数据库之前,需要对备份内容、备备份内容、备份频率以及数据备份存储介质份频率以及数据备份存储介质等进行计划。等进行计划。13.1.1数据库备份计划数据库备份计划1备份内容备份内容备份内容主要包括:备份内容主要包括:系统数据库、用户数据库和系统数据库、用户数据库和事务日志事务日志。(1)系统数据库记录了系统数据库记录了SQLServer系统配置参数、用系统配置参数、用户资料以及所有用户数据库等重要信息,主要包括户资料以及所有用户数据库等重要信息,主要包括master、msdb和和model数据库。数据库。(2)用户数据库中存储了用户的数据。由于用
5、户数据库用户数据库中存储了用户的数据。由于用户数据库具有很强的区别性,即每个用户数据库之间的数据一具有很强的区别性,即每个用户数据库之间的数据一般都有很大差异,所以对用户数据库的备份更为重要。般都有很大差异,所以对用户数据库的备份更为重要。(3)事务日志记录了用户对数据库中数据的各种操作,事务日志记录了用户对数据库中数据的各种操作,平时系统会自动管理和维护所有的数据库事务日志。平时系统会自动管理和维护所有的数据库事务日志。相比数据库备份,事务日志备份所需要的时间较少,相比数据库备份,事务日志备份所需要的时间较少,但是还原需要的时间较多。但是还原需要的时间较多。13.1.1数据库备份计划数据库备
6、份计划2备份频率备份频率数据库备份频率的考虑因素数据库备份频率的考虑因素修改数据库的频繁程度修改数据库的频繁程度一旦出现意外丢失的工作量的大小一旦出现意外丢失的工作量的大小发生意外丢失数据的可能性大小发生意外丢失数据的可能性大小系统数据库系统数据库备份不需要十分频繁备份不需要十分频繁只需要在执行某些语句或存储过程导致只需要在执行某些语句或存储过程导致SQLServer2005对系统数据库进行了修改的时候备份。对系统数据库进行了修改的时候备份。用户数据库用户数据库执行了加入数据、创建索引等操作时执行了加入数据、创建索引等操作时清除了事务日志清除了事务日志第第13章数据库的备份与还原章数据库的备份
7、与还原13.1.1数据库备份计划数据库备份计划3备份存储介质备份存储介质硬盘硬盘磁带磁带命令管道命令管道4其它计划其它计划(1)确定备份工作的负责人。确定备份工作的负责人。(2)确定使用在线备份还是脱机备份。确定使用在线备份还是脱机备份。(3)确定是否使用备份服务器。确定是否使用备份服务器。(4)确定备份存储的地方。确定备份存储的地方。(5)确定备份存储的期限。确定备份存储的期限。第第13章数据库的备份与还原章数据库的备份与还原13.1.1数据库备份的类型数据库备份的类型在在SQLSerer系统中,有系统中,有4种备份类型:种备份类型:完整备份完整备份差异备份差异备份事务日志备份事务日志备份数
8、据库文件或文件组备份数据库文件或文件组备份第第13章数据库的备份与还原章数据库的备份与还原13.1.1数据库备份的类型数据库备份的类型1完整数据库备份完整数据库备份完整数据库备份将备份整个数据库完整数据库备份将备份整个数据库所有数据所有数据足够的日志足够的日志这是任何备份策略中都要求完成的第一种备份类型,因为其他所有备份类型都依赖于完整备份。换句话说,如果没有执行完整备份,就无法执行差异备份和事务日志备份。第第13章数据库的备份与还原章数据库的备份与还原13.1.1数据库备份的类型数据库备份的类型2差异数据库备份差异数据库备份只备份自上一次完整数据库备份发生改变只备份自上一次完整数据库备份发生
9、改变的内容和在差异备份过程中所发生的所有的内容和在差异备份过程中所发生的所有活动。活动。差异数据库备份基于以前的完整数据库备差异数据库备份基于以前的完整数据库备份份“基准备份基准备份”差异备份比完整备份更小、更快,可以简差异备份比完整备份更小、更快,可以简化频繁的备份操作,减少数据丢失的风险。化频繁的备份操作,减少数据丢失的风险。第第13章数据库的备份与还原章数据库的备份与还原13.1.1数据库备份的类型数据库备份的类型3事务日志备份事务日志备份备份事务日志可以记录数据库的更改备份事务日志可以记录数据库的更改前提:执行完整数据库备份前提:执行完整数据库备份使用事务日志备份将数据库使用事务日志备
10、份将数据库恢复到特定的即时点恢复到特定的即时点或或恢复到故障点恢复到故障点。恢复事务日志备份时,恢复事务日志备份时,SQLServer2005重做事务日重做事务日志中记录的所有更改。当志中记录的所有更改。当SQLServer2005到达事务到达事务日志的最后时,已重新创建了与开始执行备份操作的日志的最后时,已重新创建了与开始执行备份操作的那一刻完整相同的数据库状态。如果数据库已经恢复,那一刻完整相同的数据库状态。如果数据库已经恢复,则则SQLServer2005将回滚备份操作开始时尚未完成将回滚备份操作开始时尚未完成的所有事务。的所有事务。事务日志备份比数据库备份使用的资源少事务日志备份比数据
11、库备份使用的资源少可以经常备份可以经常备份第第13章数据库的备份与还原章数据库的备份与还原13.1.1数据库备份的类型数据库备份的类型4数据库文件或文件组备份数据库文件或文件组备份对对超大型数据库超大型数据库执行完全数据库备份是不可行的,执行完全数据库备份是不可行的,可以执行数据库文件或文件组备份。可以执行数据库文件或文件组备份。特点:特点:可选择性粒度更小(可选择性粒度更小(备份文件或文件组时,可备份文件或文件组时,可以只备份以只备份FILE或或FILEGROUP选项中指定的数据库文选项中指定的数据库文件)。件)。好处:好处:进一步减少数据备份处理对业务系统的影响。进一步减少数据备份处理对业
12、务系统的影响。建议建议把经常变化的与不常变化的数据分配到不同的文件组把经常变化的与不常变化的数据分配到不同的文件组把重要的与不重要的数据分配到不同的文件组把重要的与不重要的数据分配到不同的文件组第第13章数据库的备份与还原章数据库的备份与还原13.2数据库还原概述数据库还原概述备份是还原数据库最容易和最能防止意外的有效备份是还原数据库最容易和最能防止意外的有效方法。没有备份,所有的数据都可能会丢失,而方法。没有备份,所有的数据都可能会丢失,而且将造成不可挽回的损失,这时就不得不从源头且将造成不可挽回的损失,这时就不得不从源头重建数据;有了备份,万一数据库被损坏,就可重建数据;有了备份,万一数据
13、库被损坏,就可以使用备份来还原数据库。以使用备份来还原数据库。第第13章数据库的备份与还原章数据库的备份与还原13.2.1数据库恢复模式数据库恢复模式每一种恢复模式都按照不同的方式维护数据库中的数据每一种恢复模式都按照不同的方式维护数据库中的数据和日志。和日志。MicrosoftSQLServer2005系统提供了系统提供了3种数种数据库的恢复模式:据库的恢复模式:完整恢复模式。完整恢复模式。简单恢复模式。简单恢复模式。大容量日志恢复模式。大容量日志恢复模式。第第13章数据库的备份与还原章数据库的备份与还原13.2.1数据库恢复模式数据库恢复模式1完整恢复模式完整恢复模式完整恢复模式是等级最高
14、的数据库恢复模式。在完整恢复完整恢复模式是等级最高的数据库恢复模式。在完整恢复模式中,对数据库的所有的操作都记录在数据库的事务模式中,对数据库的所有的操作都记录在数据库的事务日志中。即使那些大容量数据操作和创建索引的操作,日志中。即使那些大容量数据操作和创建索引的操作,也都记录在了数据库的事务日志中。当数据库遭到破坏也都记录在了数据库的事务日志中。当数据库遭到破坏之后,可以使用该数据库的事务日志迅速还原数据库。之后,可以使用该数据库的事务日志迅速还原数据库。在完整恢复模式中,由于事务日志记录了数据库的所有变在完整恢复模式中,由于事务日志记录了数据库的所有变化,所以可以使用事务日志将数据库还原到
15、任意的时刻化,所以可以使用事务日志将数据库还原到任意的时刻点。但是,这种恢复模式耗费大量的磁盘空间。除非是点。但是,这种恢复模式耗费大量的磁盘空间。除非是那种事务日志非常重要的数据库备份策略,一般不使用那种事务日志非常重要的数据库备份策略,一般不使用这种恢复模式。这种恢复模式。第第13章数据库的备份与还原章数据库的备份与还原13.2.1数据库恢复模式数据库恢复模式2简单恢复模式简单恢复模式简单恢复模式简略地记录大多数事务,所记录的信息只是简单恢复模式简略地记录大多数事务,所记录的信息只是为了确保在系统崩溃或还原数据备份之后数据库的一致为了确保在系统崩溃或还原数据备份之后数据库的一致性。性。对于
16、那些规模比较小的数据库或数据不经常改变的数据库对于那些规模比较小的数据库或数据不经常改变的数据库来说,可以使用简单恢复模式。当使用简单恢复模式时,来说,可以使用简单恢复模式。当使用简单恢复模式时,可以通过执行完全数据库备份和差异数据库备份来还原可以通过执行完全数据库备份和差异数据库备份来还原数据库,数据库只能还原到执行备份操作的时刻点。执数据库,数据库只能还原到执行备份操作的时刻点。执行备份操作之后的所有数据修改都丢失并且需要重建。行备份操作之后的所有数据修改都丢失并且需要重建。第第13章数据库的备份与还原章数据库的备份与还原13.2.1数据库恢复模式数据库恢复模式3大容量日志恢复模式大容量日
17、志恢复模式就像完整恢复模式一样,大容量日志恢复模式也就像完整恢复模式一样,大容量日志恢复模式也使用数据库备份和日志备份来还原数据库。但是,使用数据库备份和日志备份来还原数据库。但是,在使用了大容量日志恢复模式的数据库中,其事在使用了大容量日志恢复模式的数据库中,其事务日志耗费的磁盘空间远远小于使用完整恢复模务日志耗费的磁盘空间远远小于使用完整恢复模式的数据库的事务日志。式的数据库的事务日志。此模式简略地记录大多数大容量操作(例如,索此模式简略地记录大多数大容量操作(例如,索引创建和大容量加载),完整地记录其他事务。引创建和大容量加载),完整地记录其他事务。大容量日志恢复提高大容量操作的性能,常
18、用作大容量日志恢复提高大容量操作的性能,常用作完整恢复模式的补充。完整恢复模式的补充。故障还原模型故障还原模型1简单恢复模型2完整恢复模型3大容量日志恢复模型第第13章数据库的备份与还原章数据库的备份与还原13.2.1数据库恢复模式数据库恢复模式简单恢复模式同时支持数据库备份和文件备份,但不支持简单恢复模式同时支持数据库备份和文件备份,但不支持事务日志备份。备份非常易于管理,因为始终不会备份事务日志备份。备份非常易于管理,因为始终不会备份事务日志。但是,如果没有日志备份,数据库只能还原事务日志。但是,如果没有日志备份,数据库只能还原到最近数据备份的末尾。如果操作失败,则在最近数据到最近数据备份
19、的末尾。如果操作失败,则在最近数据备份之后所做的更新便会全部丢失。备份之后所做的更新便会全部丢失。在完整恢复模式和大容量日志恢复模式下,差异数据库备在完整恢复模式和大容量日志恢复模式下,差异数据库备份将最大限度地减少在还原数据库时回滚事务日志备份份将最大限度地减少在还原数据库时回滚事务日志备份所需的时间。所需的时间。事务日志备份只能与完整恢复模型和大容量日志记录恢复事务日志备份只能与完整恢复模型和大容量日志记录恢复模型一起使用。在简单模型下,事务日志有可能被破坏,模型一起使用。在简单模型下,事务日志有可能被破坏,所以事务日志备份可能不连续,不连续的事务日志备份所以事务日志备份可能不连续,不连续
20、的事务日志备份没有意义,因为基于日志的恢复要求日志是连续的。没有意义,因为基于日志的恢复要求日志是连续的。第第13章数据库的备份与还原章数据库的备份与还原13.3数据库备份操作数据库备份操作1.在在SQLServerManagementStudio中备份中备份数据库数据库第第13章数据库的备份与还原章数据库的备份与还原2使用使用T-SQL语句备份数据库语句备份数据库BACKUPDATABASEdatabase_name|database_name_var TO,.nWITHBLOCKSIZE=blocksize|blocksize_variable,DESCRIPTION=text|text_
21、variable,DIFFERENTIAL,EXPIREDATE=date|date_var,PASSWORD=password|password_variable,FORMAT|NOFORMAT,INIT|NOINIT第第13章数据库的备份与还原章数据库的备份与还原13.3数据库备份操作数据库备份操作其中的参数说明如下:其中的参数说明如下:(1)database_name|database_name_var:指定了一个数据库,:指定了一个数据库,对该数据库进行完整的数据库备份或差异数据库备份。如果作为变量对该数据库进行完整的数据库备份或差异数据库备份。如果作为变量(database_name
22、_var)提供,则可将该名称指定为字符串常量提供,则可将该名称指定为字符串常量(database_name_var=databasename)或字符串数据类型(或字符串数据类型(ntext或或text数据类型除外)的变量。数据类型除外)的变量。(2):指定备份操作时要使用的逻辑或物理备份设:指定备份操作时要使用的逻辑或物理备份设备。可以是下列一种或多种形式:备。可以是下列一种或多种形式:logical_backup_device_name|logical_backup_device_name_var:备份设备的逻辑名称,数:备份设备的逻辑名称,数据库将备份到该设备中。据库将备份到该设备中。DI
23、SK|TAPE=physical_backup_device_name|physical_backup_device_name_var:允许在指定的磁盘或磁带:允许在指定的磁盘或磁带设备上创建备份。在执行设备上创建备份。在执行BACKUP语句之前不必存在指定的物理设备。语句之前不必存在指定的物理设备。如果存在物理设备且如果存在物理设备且BACKUP语句中没有指定语句中没有指定INIT选项,则备份将选项,则备份将追加到该设备。追加到该设备。第第13章数据库的备份与还原章数据库的备份与还原13.3数据库备份操作数据库备份操作其中的参数说明如下:其中的参数说明如下:(3)BLOCKSIZE=bloc
24、ksize|blocksize_variable:用字节数来指:用字节数来指定物理块的大小。在定物理块的大小。在WindowsNT系统上,默认设置是设备的默认块系统上,默认设置是设备的默认块大小。一般情况下,当大小。一般情况下,当SQLServer选择适合于设备的块大小时不需要选择适合于设备的块大小时不需要此参数。此参数。(4)DESCRIPTION=text|text_variable:指定描述备份集的:指定描述备份集的自由格式文本。该字符串最长可以有自由格式文本。该字符串最长可以有255个字符。个字符。(5)DIFFERENTIAL:指定数据库备份或文件备份应该与上一次完整备:指定数据库备
25、份或文件备份应该与上一次完整备份后改变的数据库或文件部分保持一致。差异备份一般会比完整备份占份后改变的数据库或文件部分保持一致。差异备份一般会比完整备份占用更少的空间。对于上一次完整备份时备份的全部单个日志,使用该选用更少的空间。对于上一次完整备份时备份的全部单个日志,使用该选项可以不必再进行备份。项可以不必再进行备份。(6)EXPIREDATE=date|date_var:指定备份集到期和允许被重写:指定备份集到期和允许被重写的日期。如果将该日期作为变量的日期。如果将该日期作为变量(date_var)提供,则可以将该日期指提供,则可以将该日期指定为字符串常量定为字符串常量(date_var=
26、date)、字符串数据类型变量(、字符串数据类型变量(ntext或或text数据类型除外)、数据类型除外)、smalldatetime或者或者datetime变量,并且该日变量,并且该日期必须符合已配置的系统期必须符合已配置的系统datetime格式。格式。第第13章数据库的备份与还原章数据库的备份与还原13.3数据库备份操作数据库备份操作其中的参数说明如下:其中的参数说明如下:(7)PASSWORD=password|password_variable:为备份集:为备份集设置密码。设置密码。PASSWORD是一个字符串。如果为备份集定义了密码,是一个字符串。如果为备份集定义了密码,必须提供这
27、个密码才能对该备份集执行任何还原操作。必须提供这个密码才能对该备份集执行任何还原操作。(8)FORMAT:指定应将媒体头写入用于此备份操作的所有卷。任何现:指定应将媒体头写入用于此备份操作的所有卷。任何现有的媒体头都被重写。有的媒体头都被重写。FORMAT选项使整个媒体内容无效,即格式化选项使整个媒体内容无效,即格式化备份设备。备份设备。(9)NOFORMAT:指定媒体头不应写入所有用于该备份操作的卷中,:指定媒体头不应写入所有用于该备份操作的卷中,并且不会格式化备份设备。除非指定了并且不会格式化备份设备。除非指定了INIT。(10)INIT:表示如果备份集已经存在,新的备份集会覆盖旧的备份集
28、。:表示如果备份集已经存在,新的备份集会覆盖旧的备份集。不会格式化备份设备。不会格式化备份设备。(11)NOINIT:表示新的备份集回追加到旧的备份集的后面,不会覆盖。:表示新的备份集回追加到旧的备份集的后面,不会覆盖。不会格式化备份设备。不会格式化备份设备。第第13章数据库的备份与还原章数据库的备份与还原13.3数据库备份操作数据库备份操作在教学库中,创建一个任意的新表,表名在教学库中,创建一个任意的新表,表名“Table”。例例13-3创建教学库的差异数据库备份。创建教学库的差异数据库备份。BACKUPDATABASE教学库教学库TODISK=f:dataBACKUP教学库差异备份教学库差
29、异备份.BakWITHDIFFERENTIAL第第13章数据库的备份与还原章数据库的备份与还原13.4数据库还原操作数据库还原操作SQLServer提供了数据库的两种还原过程,自动还原提供了数据库的两种还原过程,自动还原过程和手动还原过程。过程和手动还原过程。第第13章数据库的备份与还原章数据库的备份与还原13.4数据库还原操作数据库还原操作13.4.1手动还原手动还原1.在在SQLServerManagementStudio中使用界面还原数据中使用界面还原数据库库第第13章数据库的备份与还原章数据库的备份与还原13.4.1手动还原手动还原2使用使用T-SQL语句还原数据库语句还原数据库RES
30、TOREDATABASEdatabase_name|database_name_varFROM,.nWITH,FILE=backup_set_file_number|backup_set_file_number,KEEP_REPLICATION,MEDIANAME=media_name|media_name_variable,MEDIAPASSWORD=mediapassword|mediapassword_variable,MOVElogical_file_name_in_backupTOoperating_system_file_name,.n,PASSWORD=password|pass
31、word_variable,RECOVERY|NORECOVERY|STANDBY=standby_file_name|standby_file_name_var,REPLACE第第13章数据库的备份与还原章数据库的备份与还原13.4.1手动还原手动还原2使用使用T-SQL语句还原数据库语句还原数据库RESTOREDATABASEdatabase_name|database_name_varFROM,.nWITH,FILE=backup_set_file_number|backup_set_file_number,KEEP_REPLICATION,MEDIANAME=media_name|me
32、dia_name_variable,MEDIAPASSWORD=mediapassword|mediapassword_variable,MOVElogical_file_name_in_backupTOoperating_system_file_name,.n,PASSWORD=password|password_variable,RECOVERY|NORECOVERY|STANDBY=standby_file_name|standby_file_name_var,REPLACE第第13章数据库的备份与还原章数据库的备份与还原13.4.1手动还原手动还原2使用使用T-SQL语句还原数据库语句
33、还原数据库(l)KEEP_REPLICATION:将复制设置为与日志传送一同使用。设:将复制设置为与日志传送一同使用。设置该参数后,在备用服务器上还原数据库时,可防止删除复制设置。置该参数后,在备用服务器上还原数据库时,可防止删除复制设置。(2)MOVE:将逻辑名指定的数据文件或日志文件还原到所指定的位置。:将逻辑名指定的数据文件或日志文件还原到所指定的位置。(3)RECOVERY:回滚未提交的事务,使数据库处于可以使用状态。:回滚未提交的事务,使数据库处于可以使用状态。无法还原其他事务日志。无法还原其他事务日志。(4)NORECOVERY:不对数据库执行任何操作,不回滚未提交的事务。:不对数
34、据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。可以还原其他事务日志。(5)STANDBY:使数据库处于只读模式。撤消未提交的事务,但将撤消:使数据库处于只读模式。撤消未提交的事务,但将撤消操作保存在备用文件中,以便可以恢复效果逆转。操作保存在备用文件中,以便可以恢复效果逆转。(6)standby_file_name|standby_file_name_var:指定一个允:指定一个允许撤消恢复效果的备用文件或变量。许撤消恢复效果的备用文件或变量。(7)REPLACE:会覆盖所有现有数据库以及相关文件,包括已存在:会覆盖所有现有数据库以及相关文件,包括已存在的同名的其他数据库或文件。
35、的同名的其他数据库或文件。第第13章数据库的备份与还原章数据库的备份与还原13.4.1手动还原手动还原例例13-6将将“教学库教学库”数据库的完整数据库备份进行还原。数据库的完整数据库备份进行还原。RESTOREDATABASE教学库教学库FROMDISK=F:DATABACKUP教学库教学库.Bak例例13-7将将“教学库教学库”数据库的差异数据库备份进行还原。数据库的差异数据库备份进行还原。RESTOREDATABASE教学库教学库FROMDISK=F:DATABACKUP教学库差异备份教学库差异备份.BakRECOVERY 第第13章数据库的备份与还原章数据库的备份与还原13.5数据库分
36、离与附加数据库分离与附加SQLServer2005允许分离数据库的数据和事务日志文件,允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。分离数据然后将其重新附加到同一台或另一台服务器上。分离数据库将从库将从SQLServer删除数据库,但是保证在组成该数据删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何数据和事务日志文件可以用来将数据库附加到任何SQLServer实例上,这使数据库的使用状态与它分离时的状实例上,这使数据库的使用状态与它分离
37、时的状态完全相同。态完全相同。例如,如果您数据库系统安装在系统盘(比如例如,如果您数据库系统安装在系统盘(比如C盘),由盘),由于于C盘容易受病毒侵害,您也许希望您的数据存放在非系盘容易受病毒侵害,您也许希望您的数据存放在非系统盘(比如统盘(比如D盘),要做的这点很简单,您并不需要重装盘),要做的这点很简单,您并不需要重装数据库,只要把数据数据库,只要把数据“分离分离”,然后将相关文件移动到,然后将相关文件移动到D盘的某个目录,接着盘的某个目录,接着“附加附加”数据库即可。数据库即可。第第13章数据库的备份与还原章数据库的备份与还原13.5.1分离数据库分离数据库1.在在SQLServerMa
38、nagementStudio中使用界面分离中使用界面分离数据库数据库在在SQLServerManagementStudio的对象资源管理器中的对象资源管理器中分离数据库的操作步骤如下:分离数据库的操作步骤如下:(1)在对象资源管理器中展开要分离的数据库。在对象资源管理器中展开要分离的数据库。(2)鼠标右击数据库名称,在弹出的快捷菜单中选择鼠标右击数据库名称,在弹出的快捷菜单中选择“任任务务”子菜单,然后选择子菜单,然后选择“分离分离”命令。命令。(3)弹出弹出“分离数据库分离数据库”对话框。单击对话框。单击“确定确定”按钮即可按钮即可完成数据库的分离。完成数据库的分离。第第13章数据库的备份与
39、还原章数据库的备份与还原13.5.1分离数据库分离数据库2使用使用T-SQL语句分离数据库语句分离数据库可以使用系统存储过程可以使用系统存储过程sp_detach_db分离该数据库。分离该数据库。sp_detach_db存储过程从服务器分离数据库,并可以选存储过程从服务器分离数据库,并可以选择在分离前在所有的表上运行择在分离前在所有的表上运行UPDATESTATISTICS。其语法格式如下:其语法格式如下:sp_detach_dbdbname=dbname,skipchecks=skipchecks第第13章数据库的备份与还原章数据库的备份与还原13.5.1分离数据库分离数据库2使用使用T-S
40、QL语句分离数据库语句分离数据库参数说明:参数说明:(1)dbname=dbname:要分离的数据库名称。:要分离的数据库名称。dbname的的数据类型为数据类型为sysname,默认值为,默认值为NULL。(2)skipchecks=skipchecks:skipchecks的数据类型为的数据类型为nvarchar(10),默认值为,默认值为NULL。如果为。如果为true,则跳过,则跳过UPDATESTATISTICS。如果为。如果为false,则运行,则运行UPDATESTATISTICS。对于要移动到只读媒体上的数据库,此选项很有。对于要移动到只读媒体上的数据库,此选项很有用。用。例例
41、13-8分离仓库库存数据库,并将分离仓库库存数据库,并将skipchecks设为设为true。EXECsp_detach_db仓库库存仓库库存,true第第13章数据库的备份与还原章数据库的备份与还原13.5.2附加数据库附加数据库与分离对应的是附加数据库操作。附加数据库可以很方便与分离对应的是附加数据库操作。附加数据库可以很方便地在地在SQLServer2005服务器之间利用分离后的数据文件服务器之间利用分离后的数据文件和日志文件组织成新的数据库。数据库的附加好比是将衣和日志文件组织成新的数据库。数据库的附加好比是将衣服(数据库)重新挂上衣架(服(数据库)重新挂上衣架(SQLServer20
42、05服务器)。服务器)。在在MicrosoftSQLServer2005中,数据库附加操作有两中,数据库附加操作有两种方式:在种方式:在SQLServerManagementStudio中使用界面中使用界面附加数据库和使用附加数据库和使用T-SQL语句附加数据库。语句附加数据库。第第13章数据库的备份与还原章数据库的备份与还原13.5.2附加数据库附加数据库2使用使用T-SQL语句附加数据库语句附加数据库可以使用系统存储过程可以使用系统存储过程sp_attach_db将数据库附加到当前将数据库附加到当前服务器或使用系统存储过程服务器或使用系统存储过程sp_attach_single_file_
43、db将将只有一个数据文件的数据库附加到当前服务器。只有一个数据文件的数据库附加到当前服务器。(1)系统存储过程系统存储过程sp_attach_db附加数据库语法格式:附加数据库语法格式:sp_attach_dbdbname=dbname,filename1=filename_n,.16参数说明:参数说明:(1)dbname=dbname:要附加到服务器的数据库的名:要附加到服务器的数据库的名称。该名称必须是唯一的。称。该名称必须是唯一的。dbname的数据类型为的数据类型为sysname,默认值为,默认值为NULL。第第13章数据库的备份与还原章数据库的备份与还原13.5.2附加数据库附加数据
44、库2使用使用T-SQL语句附加数据库语句附加数据库(2)filename1=filename_n:数据库文件的物理名称,:数据库文件的物理名称,包括路径。包括路径。filename_n的数据类型为的数据类型为nvarchar(260),默认,默认值为值为NULL。最多可以指定。最多可以指定16个文件名。参数名称以个文件名。参数名称以filename1开始,递增到开始,递增到filename16。文件名列表至少必。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。该列表还必须包
45、括数据库分离后所有被移动的文件。例例13-9附加仓库库存数据库到当前服务器。附加仓库库存数据库到当前服务器。EXECsp_attach_dbdbname=仓库库存仓库库存,filename1=F:DATA仓库库存仓库库存.mdf,filename2=F:DATA仓库库存仓库库存_log.ldf第第13章数据库的备份与还原章数据库的备份与还原13.5.2附加数据库附加数据库2使用使用T-SQL语句附加数据库语句附加数据库(2)系统存储过程系统存储过程sp_attach_single_file_db附加只有一个附加只有一个数据文件的数据库的语法格式:数据文件的数据库的语法格式:sp_attach_single_file_dbdbname=dbname,physname=physical_name其中,其中,physname=phsyical_name为据库文件的物理名为据库文件的物理名称,包括路径。称,包括路径。physical_name的数据类型为的数据类型为nvarchar(260),默认值为,默认值为NULL。例例13-10附加仓库库存数据库到当前服务器。附加仓库库存数据库到当前服务器。EXECsp_attach_single_file_dbdbname=仓库库存仓库库存,physname=F:DATA仓库库存仓库库存.mdf
限制150内