SQL-Server-2012数据库开发教程第10章.ppt
SQL Server 2012SQL Server 2012数据库开发教程数据库开发教程数据库开发教程数据库开发教程(第(第(第(第33版)版)版)版)授课教师:授课教师:职务:职务:第第10章章 维护数据库维护数据库 课程描述课程描述课程描述课程描述维护数据库的正常运行、维护数据库的正常运行、维护数据库的正常运行、维护数据库的正常运行、保证数据安全是保证数据安全是保证数据安全是保证数据安全是SQL SQL SQL SQL ServerServerServerServer数据库管理员的主数据库管理员的主数据库管理员的主数据库管理员的主要工作。维护数据库的工要工作。维护数据库的工要工作。维护数据库的工要工作。维护数据库的工作很琐碎,多数工作也是作很琐碎,多数工作也是作很琐碎,多数工作也是作很琐碎,多数工作也是每天重复进行,但一旦数每天重复进行,但一旦数每天重复进行,但一旦数每天重复进行,但一旦数据库服务器出现故障,这据库服务器出现故障,这据库服务器出现故障,这据库服务器出现故障,这些工作的意义就突显出来些工作的意义就突显出来些工作的意义就突显出来些工作的意义就突显出来了。本章介绍的维护数据了。本章介绍的维护数据了。本章介绍的维护数据了。本章介绍的维护数据库操作包括导入和导出数库操作包括导入和导出数库操作包括导入和导出数库操作包括导入和导出数据、备份和恢复数据库,据、备份和恢复数据库,据、备份和恢复数据库,据、备份和恢复数据库,以及以及以及以及SQL Server 2012SQL Server 2012SQL Server 2012SQL Server 2012的新的新的新的新特性特性特性特性数据库快照。数据库快照。数据库快照。数据库快照。本章知识点本章知识点10.1 10.1 导入和导出数据导入和导出数据10.2 10.2 备份数据库备份数据库10.3 10.3 恢复数据库恢复数据库 10.4 10.4 数据库快照数据库快照 10.1 导入和导出数据导入和导出数据 10.1.1 10.1.1 将表中数据导出到文本文件将表中数据导出到文本文件 10.1.2 10.1.2 将表中数据导出到将表中数据导出到AccessAccess数据库数据库 10.1.3 10.1.3 从文本文件向从文本文件向SQL ServerSQL Server数据库数据库中导入数据中导入数据 10.1.4 10.1.4 从从AccessAccess数据库中导入数据数据库中导入数据 10.1.1 将表中数据导出到文本文件将表中数据导出到文本文件【例例10-110-1】参照下面的参照下面的步骤将表步骤将表DepartmentsDepartments中的数中的数据导出到一个文本文据导出到一个文本文件中。件中。(1 1)在)在“开始开始”菜单菜单中依次选择中依次选择“程序程序”/“Microsoft SQL Microsoft SQL Server 2012Server 2012”/“导导入和导出数据(入和导出数据(3232位)位)”,打开,打开“SQL SQL ServerServer导入和导出向导入和导出向导导”的欢迎窗口,如的欢迎窗口,如图图10-110-1所示。所示。【例例10-1】(2 2)在欢迎窗口)在欢迎窗口中单击中单击“下一下一步步”按钮,打按钮,打开开“选择数据选择数据源源”窗口。数窗口。数据源选择默认据源选择默认的的“用于用于SQL SQL Server Native Server Native Client 10.0Client 10.0”,数据库选择,数据库选择HrSystemHrSystem,如,如图图10-210-2所示。所示。【例例10-1】(3 3)单击)单击“下一步下一步”按钮,打开按钮,打开“选择目标选择目标”对话对话框。框。“目标目标”选选择择“平面文件目平面文件目标标”,“文件名文件名”设置为设置为C:C:部门部门.txt.txt,如图,如图10-310-3所示。所示。【例例10-1】(4 4)单击)单击“下一步下一步”按按钮,打开钮,打开“指定表指定表复制或查询复制或查询”窗口。窗口。在此窗口中,用户在此窗口中,用户要指定是从数据源要指定是从数据源复制一个或多个表复制一个或多个表/视图,还是复制查视图,还是复制查询结果。可以看到询结果。可以看到以下以下2 2个选项:个选项:p复制一个或多个表复制一个或多个表和视图的数据。和视图的数据。p编写查询以指定要编写查询以指定要传输的数据。传输的数据。这里选择第一项,如图这里选择第一项,如图10-410-4所示。所示。【例例10-1】(5 5)单击)单击“下一步下一步”按钮,按钮,打开打开“配置平面文件配置平面文件目标目标”对话框,源选对话框,源选择择.dbo.Departments.dbo.Departments。可以使用分隔符来。可以使用分隔符来区别各列的数据,也区别各列的数据,也可以设置固定字段,可以设置固定字段,使信息以等宽方式按使信息以等宽方式按列对齐。可以根据需列对齐。可以根据需要设置文件类型、行要设置文件类型、行分隔符、列分隔符、分隔符、列分隔符、以及文本限定符。如以及文本限定符。如果没有特殊的需要,果没有特殊的需要,建议不要改变其他选建议不要改变其他选项,如图项,如图10-510-5所示。所示。【例例10-1】p(6 6)单击)单击“下一步下一步”按按钮,打开钮,打开“保存并运行包保存并运行包”对话框,如图对话框,如图10-610-6所示。如所示。如果选择果选择“立即运行立即运行”,则当,则当向导结束后,立即运行转换向导结束后,立即运行转换并创建目的数据。并创建目的数据。p如果选择如果选择“保存保存SSISSSIS包包”,则将导出数据的信息保存,则将导出数据的信息保存到到SQL ServerSQL Server数据库或指定数据库或指定的文件中,以便日后运行。的文件中,以便日后运行。【例例10-1】p(7 7)单击)单击“下一步下一步”按钮,打开按钮,打开“完成该完成该向导向导”对话框,如图对话框,如图10-710-7所示。在所示。在“摘要摘要”框中列出了当前导框中列出了当前导出数据的基本情况,出数据的基本情况,单击单击“完成完成”按钮结按钮结束向导。束向导。【例例10-1】(8 8)因为选择了)因为选择了“立即运行立即运行”选项,选项,向导将立即运行向导将立即运行DTSDTS包,并显示运行进包,并显示运行进程和结果,如图程和结果,如图10-10-8 8所示。所示。【例例10-1】(9 9)单击)单击“关闭关闭”按钮。打开按钮。打开C:C:部门部门.txt.txt,其内容如下:其内容如下:1,1,人事部人事部 2,2,办公室办公室 3,3,财务部财务部 4,4,技术部技术部 5,5,服务部服务部 p这正是表这正是表DepartmentsDepartments的内容。的内容。10.1.2 将表中数据导出到将表中数据导出到Access数据库数据库 p【例例10-210-2】下面介绍如何使用下面介绍如何使用SQL ServerSQL Server导出向导,将导出向导,将表表DepartmentsDepartments中的数据导出到中的数据导出到AccessAccess数据库中。具体数据库中。具体步骤如下:步骤如下:p(1 1)在)在“开始开始”菜单中依次选择菜单中依次选择“程序程序”/“Microsoft SQL Server 2012Microsoft SQL Server 2012”/“导入和导出数导入和导出数据(据(3232位)位)”,打开,打开“SQL ServerSQL Server导入和导出向导导入和导出向导”的的欢迎窗口。欢迎窗口。p(2 2)在欢迎窗口中单击)在欢迎窗口中单击“下一步下一步”按钮,打开按钮,打开“选择选择数据源数据源”窗口。数据源选择默认的窗口。数据源选择默认的“用于用于SQL Server SQL Server Native Client 10.0Native Client 10.0”,数据库选择,数据库选择HrSystemHrSystem。【例例10-2】(3 3)单击)单击“下一步下一步”按按钮,打开钮,打开“选择目选择目标标”对话框。在对话框。在“目标目标”组合框中选组合框中选择择Microsoft Microsoft AccessAccess。输入。输入AccessAccess数据库文件数据库文件名,例如名,例如“C:C:部门部门信息信息”。如果存在。如果存在用户名和密码,也用户名和密码,也一并输入,如图一并输入,如图10-10-9 9所示。注意,选择所示。注意,选择的的AccessAccess数据库必数据库必须已经存在。须已经存在。【例例10-2】(4 4)单击)单击“下一步下一步”按钮,按钮,打开打开“指定表复制或查指定表复制或查询询”窗口。在此窗口中,窗口。在此窗口中,用户要指定是从数据源用户要指定是从数据源复制一个或多个表复制一个或多个表/视图,视图,还是复制查询结果。还是复制查询结果。(5 5)在)在“指定表复制或查询指定表复制或查询”窗口中保持默认的选窗口中保持默认的选项,然后单击项,然后单击“下一步下一步”按钮,打开按钮,打开“选择源选择源表和视图表和视图”对话框,源对话框,源数据选中数据选中dbo.Departmentsdbo.Departments,向导会自动生成同名的向导会自动生成同名的目的表名目的表名DepartmentsDepartments,如图如图10-1010-10所示。所示。【例例10-2】p(6 6)单击)单击“下一步下一步”按钮,打开按钮,打开“保存、调度和复制包保存、调度和复制包”对话对话框。选择框。选择“立即运行立即运行”复选框,然后单击复选框,然后单击“完成完成”按钮,开始按钮,开始导出数据。导出数据。p导出数据完成后,打开导出数据完成后,打开AccessAccess数据库,查看表数据库,查看表DepartmentsDepartments,如,如图图10-1110-11所示。其中的数据与所示。其中的数据与SQL ServerSQL Server数据库的内容相同。数据库的内容相同。10.1.3 从文本文件向从文本文件向SQL Server数据库中导数据库中导入数据入数据【例例10-310-3】下面介绍如何将下面介绍如何将“C:C:部门部门.txt.txt”导导入到数据库入到数据库HrManagerHrManager中,具体步骤如下:中,具体步骤如下:(1 1)在)在“开始开始”菜单中依次选择菜单中依次选择“程序程序”/“Microsoft SQL Server 2012Microsoft SQL Server 2012”/“导导入和导出数据(入和导出数据(3232位)位)”,打开,打开“SQL SQL ServerServer导入和导出向导导入和导出向导”的欢迎窗口。的欢迎窗口。【例例10-3】(2 2)在欢迎窗口中单)在欢迎窗口中单击击“下一步下一步”按按钮,打开钮,打开“选择选择数据源数据源”窗口。窗口。数据源选择数据源选择“平平面文本源面文本源”,“文件名文件名”设置为设置为C:C:部门部门.txt.txt,如,如图图10-1210-12所示。所示。【例例10-3】(3 3)单击)单击“下一步下一步”按钮,打开按钮,打开“选择文件选择文件格式格式”对话框,这里需对话框,这里需要根据导出数据时的格要根据导出数据时的格式设置。如果导出数据式设置。如果导出数据时采用的是默认设置,时采用的是默认设置,则导入数据时也不需要则导入数据时也不需要做特殊设置,如图做特殊设置,如图10-10-1313所示。所示。【例例10-3】(4 4)单击)单击“下一步下一步”按按钮,打开钮,打开“选择目标选择目标”对话框。对话框。“目标目标”选择选择默认的默认的“SQL Server SQL Server Native Client 10.0Native Client 10.0”,数据库选择,数据库选择HrSystemHrSystem,如图,如图10-1410-14所示。所示。【例例10-3】(5 5)单击)单击“下一步下一步”按钮,打开按钮,打开“选择源选择源表和视图表和视图”对话框。对话框。默认的目的表为与文默认的目的表为与文本文件同名的本文件同名的“dbo.dbo.部门部门”,如图如图10-1510-15所示。单所示。单击击 “编辑映射编辑映射”按按钮,打开钮,打开“列映射列映射”窗口,如图窗口,如图10-1610-16所所示。可以在此窗口中示。可以在此窗口中设置目的表的列名、设置目的表的列名、列属性以及数据源和列属性以及数据源和目的列的对应关系。目的列的对应关系。【例例10-3】(7 7)单击)单击“完成完成”按钮,因为选择了按钮,因为选择了“立即运行立即运行”选项,选项,向导将立即执行导入操作,并显示运行进程和结果。向导将立即执行导入操作,并显示运行进程和结果。查看表查看表“部门部门”中的数据,如图中的数据,如图10-1710-17所示。所示。10.1.4 从从Access数据库中导入数据数据库中导入数据 在本节中介绍使用在本节中介绍使用SQL ServerSQL Server导入向导将导入向导将AccessAccess数据库表数据库表“部门部门”中的数据导入到中的数据导入到SQL ServerSQL Server的方法。具体步骤如下:的方法。具体步骤如下:(1 1)在)在“开始开始”菜单中依次选择菜单中依次选择“程序程序”/“Microsoft SQL Server 2012Microsoft SQL Server 2012”/“导导入和导出数据(入和导出数据(3232位)位)”,打开,打开“SQL SQL ServerServer导入和导出向导导入和导出向导”的欢迎窗口。的欢迎窗口。第第2步步p在欢迎窗口中单在欢迎窗口中单击击“下一步下一步”按钮,按钮,打开打开“选择数据源选择数据源”窗口。数据源选窗口。数据源选择择“Microsoft Microsoft AccessAccess”,“文件文件名名”设置为设置为C:C:部部门信息门信息.mdb.mdb,如图,如图10-1810-18所示。所示。第第3步步p单击单击“下一步下一步”按钮,按钮,打开打开“选择目的选择目的”对对话框。选择话框。选择SQL SQL ServerServer数据库服务器,数据库服务器,然后选择数据库然后选择数据库HrSystemHrSystem,如图,如图10-10-1919所示。所示。第第4步步 p单击单击“下一步下一步”按钮,打开按钮,打开“指定表复制或查指定表复制或查询询”窗口。在此窗口中,用户要指定是从数据窗口。在此窗口中,用户要指定是从数据源复制一个或多个表源复制一个或多个表/视图,还是复制查询结视图,还是复制查询结果。这里选择第一项。果。这里选择第一项。第第5步步 p单击单击“下一步下一步”按按钮,打开钮,打开“选择源选择源表和视图表和视图”对话框,对话框,目的数据修改为目的数据修改为 dbo.DepInfodbo.DepInfo(用于区分原表(用于区分原表DepartmentsDepartments),),如图如图10-2010-20所示。所示。第第6、7步步(6 6)单击)单击“下一步下一步”按按钮,打开钮,打开“保存、运行保存、运行包包”对话框。对话框。(7 7)选择)选择“立即运行立即运行”选项,然后单击选项,然后单击“完成完成”按钮,向导将立即执按钮,向导将立即执行导入操作,并显示运行导入操作,并显示运行进程和结果。行进程和结果。查看表查看表DepInfoDepInfo的内容,的内容,如图如图10-2110-21所示。所示。10.2 备份数据库备份数据库p10.2.1 10.2.1 数据库备份方式数据库备份方式p10.2.2 SQL Server 201210.2.2 SQL Server 2012的备份和恢复的备份和恢复数据库模式数据库模式p10.2.3 10.2.3 创建和删除备份设备创建和删除备份设备p10.2.4 10.2.4 使用图形界面工具对数据库进行使用图形界面工具对数据库进行备份备份p10.2.5 10.2.5 使用使用BACKUP DATABASEBACKUP DATABASE语句备份语句备份数据库数据库10.2.1 数据库备份方式数据库备份方式p1 1完全数据库备份完全数据库备份p2 2差异数据库备份差异数据库备份p3 3文件或文件组备份文件或文件组备份p4 4事务日志备份事务日志备份1完全数据库备份完全数据库备份p完全数据库备份是制作数据库中所有内容的一个副本,完全数据库备份是制作数据库中所有内容的一个副本,备份过程花费时间相对较长,备份占用的空间大,因此备份过程花费时间相对较长,备份占用的空间大,因此不宜频繁进行。完全数据库备份的简单语法形式如下:不宜频繁进行。完全数据库备份的简单语法形式如下:BACKUP DATABASE BACKUP DATABASE 数据库名称数据库名称TO TO ,.n ,.n WITH WITH NAME=NAME=备份集名称备份集名称 ,DESCRIPTION=,DESCRIPTION=备份描述文本备份描述文本 ,INIT|NOINIT ,INIT|NOINIT 【例【例10-9】p将将“学生管理学生管理”数据库备份到数据库备份到d d盘的盘的mybackupmybackup文件夹下文件夹下的的“学生管理学生管理.bak.bak”文件中。文件中。-首先先创建一个备份设备首先先创建一个备份设备sp_addumpdevice disk,mycopy1,d:mybackupsp_addumpdevice disk,mycopy1,d:mybackup学生学生管理管理.bak.bak-用用BACKUP DATABASEBACKUP DATABASE备份学生管理数据库备份学生管理数据库BACKUP DATABASE BACKUP DATABASE 学生管理学生管理TO mycopy1TO mycopy1WITHWITHNAME=NAME=学生管理备份学生管理备份,DESCRIPTION=DESCRIPTION=完全备份完全备份【例【例10-10】p将将“学生管理学生管理”数据库备份到网络中的另数据库备份到网络中的另一台主机一台主机ServerXServerX上。上。sp_addumpdevice sp_addumpdevice disk,STDcopy,ServerXbackupsdisk,STDcopy,ServerXbackupstudent.dattudent.datBACKUP DATABASE BACKUP DATABASE 学生管理学生管理 TO STDcopy TO STDcopy2差异数据库备份差异数据库备份p差异备份的简单语法形式如下:差异备份的简单语法形式如下:BACKUP DATABASE BACKUP DATABASE 数据库名称数据库名称TO TO ,.n ,.n WITHWITH DIFFERENTIAL DIFFERENTIAL ,NAME=,NAME=备份集名称备份集名称 ,DESCRIPTION=,DESCRIPTION=备份描述文本备份描述文本 ,INIT|NOINIT ,INIT|NOINIT p其中,其中,DIFFERENTIALDIFFERENTIAL指定要进行差异备份,其他选项与指定要进行差异备份,其他选项与完全数据库备份类似。完全数据库备份类似。【例【例10-11】p假设对假设对“学生管理学生管理”数据库进行了一些修数据库进行了一些修改,现在要做一个差异备份,且将该备份改,现在要做一个差异备份,且将该备份添加到例添加到例10-910-9的现有备份之后。的现有备份之后。BACKUP DATABASE BACKUP DATABASE 学生管理学生管理 TO mycopy1 TO mycopy1WITH DIFFERENTIAL,WITH DIFFERENTIAL,NOINIT,NOINIT,NAME=NAME=学生管理备份学生管理备份,DESCRIPTION=DESCRIPTION=第一次差异备份第一次差异备份 3文件或文件组备份文件或文件组备份p当一个数据库很大时,对整个数据库进行备份可能会花费很多时间,这时当一个数据库很大时,对整个数据库进行备份可能会花费很多时间,这时可以采用文件或文件组备份,即对数据库中的部分文件或文件组进行备份。可以采用文件或文件组备份,即对数据库中的部分文件或文件组进行备份。文件或文件组备份的简单语法形式如下:文件或文件组备份的简单语法形式如下:BACKUP DATABASEBACKUP DATABASE数据库名称数据库名称 ,.n ,.n TO TO ,.n ,.n WITH WITH DIFFERENTIAL DIFFERENTIAL ,NAME=,NAME=备份集名称备份集名称 ,DESCRIPTION=,DESCRIPTION=备份描述文本备份描述文本 ,INIT|NOINIT ,INIT|NOINIT p其中,其中,定义如下:定义如下::=FILE=:=FILE=逻辑文件名逻辑文件名|FILEGROUP=|FILEGROUP=逻辑文件组名逻辑文件组名 p其他选项和完全或差异数据库备份类似。其他选项和完全或差异数据库备份类似。【例【例10-12】p将将testtest数据库的数据库的grp1_file1grp1_file1文件备份到文文件备份到文件件“E:tempgrp1_file1.datE:tempgrp1_file1.dat”中。中。BACKUP DATABASE testBACKUP DATABASE testFILE=grp1_file1FILE=grp1_file1TO DISK=E:tempgrp1_file1.datTO DISK=E:tempgrp1_file1.dat【例【例10-13】p将将testtest数据库的文件组数据库的文件组grp1grp1备份到文件备份到文件“E:tempgroup1.datE:tempgroup1.dat”中。中。BACKUP DATABASE testBACKUP DATABASE testFILEGROUP=grp1FILEGROUP=grp1TO DISK=E:tempgroup1.datTO DISK=E:tempgroup1.datWITHWITHNAME=group backup of testNAME=group backup of test4事务日志备份事务日志备份p事务日志是自上次备份事务日志后对数据库执行的所有事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录,备份事务日志将对最近一次备份事事务的一系列记录,备份事务日志将对最近一次备份事务日志以来的所有事务日志进行备份。备份事务日志的务日志以来的所有事务日志进行备份。备份事务日志的简单语法形式如下:简单语法形式如下:BACKUP LOG BACKUP LOG 数据库名称数据库名称TO TO ,.n ,.n WITH WITH ,NAME=,NAME=备份集名称备份集名称 ,DESCRIPTION=,DESCRIPTION=备份描述文本备份描述文本 ,INIT|NOINIT ,INIT|NOINIT 【例【例10-14】p将将“学生管理学生管理”数据库的日志文件备份到数据库的日志文件备份到文件文件“e:tempMyLog1.bake:tempMyLog1.bak”中。中。EXEC sp_addumpdevice disk,EXEC sp_addumpdevice disk,MyLog1,e:tempMyLog1.bakMyLog1,e:tempMyLog1.bakBACKUP LOG BACKUP LOG 学生管理学生管理 TO MyLog1 TO MyLog110.3 恢复数据库恢复数据库 数据库备份后,一旦系统发生崩溃或者执行了错数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复误的数据库操作,就可以从备份文件中恢复(还原)数据库,让数据库回到备份时的状态。(还原)数据库,让数据库回到备份时的状态。通常在以下情况下需要恢复数据库。通常在以下情况下需要恢复数据库。p 媒体故障。媒体故障。用户操作错误。用户操作错误。p 服务器永久丢失。服务器永久丢失。p 将数据库从一台服务器复制到另一台服务器。将数据库从一台服务器复制到另一台服务器。还原数据库前将还原数据库前将“限制访问限制访问”选项设置为选项设置为SINGLE_USERp恢复数据库之前,需恢复数据库之前,需要限制其他用户访问要限制其他用户访问数据库。可以在数据库。可以在SQL SQL Server Management Server Management StudioStudio中用鼠标右击中用鼠标右击数据库名称,从弹出数据库名称,从弹出的快捷菜单中选择的快捷菜单中选择“属性属性”,打开数据库,打开数据库属性对话框,在该对属性对话框,在该对话框的话框的“选项选项”页上页上将将“限制访问限制访问”选择选择为为SINGLE_USERSINGLE_USER,如,如图图10-3110-31。恢复完毕。恢复完毕后,别忘了将后,别忘了将“限制限制访问访问”改为以前的状改为以前的状态态“MULTI_USERMULTI_USER”。10.3.1 使用使用图形界面工具恢复数据库使用使用图形界面工具恢复数据库p在在SQL Server SQL Server Management StudioManagement Studio中,中,展开要还原的数据库所展开要还原的数据库所在的服务器组,然后展在的服务器组,然后展开服务器。在对象资源开服务器。在对象资源管理器中右击管理器中右击“数据库数据库”项,在弹出菜单中选项,在弹出菜单中选择择“还原数据库还原数据库”,打,打开开“还原数据库还原数据库”窗口。窗口。将将“目标数据库目标数据库”框设框设置为要还原的数据库。置为要还原的数据库。默认情况下,默认情况下,“还原的还原的源源”选项中设置为选项中设置为“源源数据库数据库”,下面的列表,下面的列表中给出了指定数据库备中给出了指定数据库备份的情况,如图份的情况,如图10-3210-32所所示。示。“指定设备指定设备”对话框对话框p可以直接从备份集可以直接从备份集表格中选择备份记表格中选择备份记录,将当前数据库录,将当前数据库还原到备份时的数还原到备份时的数据。如果要还原的据。如果要还原的数据库不存在,则数据库不存在,则列表中就不会存在列表中就不会存在记录。在这种情况记录。在这种情况下,可以选择下,可以选择“源源设备设备”,然后单击,然后单击后面的后面的“”按钮,按钮,打开打开“指定设备指定设备”对话框,如图对话框,如图10-3310-33所示。单击所示。单击“添加添加”按钮,打开按钮,打开“定定位备份设备位备份设备”对话对话框,如图框,如图10-3410-34所示。所示。选择备份集选择备份集p选择备份数据库文件,选择备份数据库文件,然后单击然后单击“确定确定”按钮,按钮,返回返回“指定设备指定设备”对话对话框。此时,数据库备份框。此时,数据库备份文件出现在对话框的备文件出现在对话框的备份位置列表中。在份位置列表中。在“指指定设备定设备”对话框中单击对话框中单击“确定确定”按钮,返回按钮,返回“还原数据库还原数据库”对话框。对话框。此时,数据库备份文件此时,数据库备份文件中的信息已经出现在中的信息已经出现在“用于还原的备份集用于还原的备份集”列列表中,如图表中,如图10-3510-35所示。所示。设置还原选项设置还原选项p在执行恢复操作在执行恢复操作之前,应该关闭之前,应该关闭其他所有与目标其他所有与目标数据库的连接。数据库的连接。例如,在例如,在SQL SQL Server Server Management Management StudioStudio中与当前中与当前数据库有连接的数据库有连接的其他窗口。如果其他窗口。如果还原不成功,则还原不成功,则可以在左侧列表可以在左侧列表中选中中选中“选项选项”,设置还原选项,设置还原选项,如图如图10-3610-36所示。所示。10.3.2 使用使用RESTORE DATABASE语句恢复数据库语句恢复数据库pRESTORE DATABASERESTORE DATABASE语句非常复杂,常用的简单使用方法语句非常复杂,常用的简单使用方法语法形式如下:语法形式如下:RESTORE DATABASE RESTORE DATABASE 数据库名称数据库名称 FROM FROM ,.n ,.n WITH WITH ,FILE=,FILE=文件号文件号 ,MOVE ,MOVE 逻辑文件名逻辑文件名 TO TO 物理文件名物理文件名 ,.n,.n ,NORECOVERY|RECOVERY ,NORECOVERY|RECOVERY ,REPLACE ,REPLACE 【例【例10-15】p设在设在E E盘盘temptemp文件夹下有一个职工数据库的完全备份文件文件夹下有一个职工数据库的完全备份文件“职工职工.bak.bak”,恢复该数据库,将恢复后的数据库名称改为,恢复该数据库,将恢复后的数据库名称改为“职工信息职工信息”。如果当前服务器中存在。如果当前服务器中存在“职工信息职工信息”数据库,则覆盖该数据数据库,则覆盖该数据库。库。p方法一:使用备份设备。方法一:使用备份设备。EXEC sp_addumpdevice disk,copy1,E:tempEXEC sp_addumpdevice disk,copy1,E:temp职工职工.bak.bakRESTORE DATABASE RESTORE DATABASE 职工信息职工信息FROM copy1 FROM copy1 WITHWITH MOVE MOVE 职工职工_data _data TO e:sql_data TO e:sql_data职工信息职工信息.mdf,.mdf,MOVE MOVE 职工职工_log _log TO e:sql_log TO e:sql_log职工信息职工信息.lgf,.lgf,REPLACE REPLACE【例【例10-15】方法二:】方法二:p直接指定磁盘文件名。直接指定磁盘文件名。RESTORE DATABASE RESTORE DATABASE 职工信息职工信息FROM DISK=E:tempFROM DISK=E:temp职工职工.bak.bakWITHWITH MOVE MOVE 职工职工_data _data TO e:sql_data TO e:sql_data职工信息职工信息.mdf,.mdf,MOVE MOVE 职工职工_log _log TO e:sql_log TO e:sql_log职工信息职工信息.lgf,.lgf,REPLACE REPLACE【例【例10-16】p设第一天做了一个设第一天做了一个“学生管理学生管理”数据库的完全备份(如例数据库的完全备份(如例10-910-9),第第2 2天做天做了一个了一个“学生管理学生管理”数据库的差异备份(如例数据库的差异备份(如例10-1110-11),之后数据库出现),之后数据库出现故障,将数据库恢复到做差异备份时的状态。故障,将数据库恢复到做差异备份时的状态。-恢复完全备份恢复完全备份RESTORE DATABASE RESTORE DATABASE 学生管理学生管理FROM mycopy1FROM mycopy1WITHWITHFILE=1,FILE=1,NORECOVERY NORECOVERY-这时数据库无法使用,继续恢复差异备份这时数据库无法使用,继续恢复差异备份RESTORE DATABASE RESTORE DATABASE 学生管理学生管理FROM mycopy1FROM mycopy1WITHWITHFILE=2,FILE=2,RECOVERY -RECOVERY -这时数据库可以使用这时数据库可以使用10.3.3 使用使用RESTORE LOG语句恢复事务日语句恢复事务日志志pRESTORE LOGRESTORE LOG语句的简单语法形式如下:语句的简单语法形式如下:RESTORE LOG RESTORE LOG 数据库名称数据库名称 FROM FROM ,.n ,.n WITH WITH ,FILE=,FILE=文件号文件号 ,MOVE ,MOVE 逻辑文件名逻辑文件名 TO TO 物理文件物理文件名名 ,.n ,.n ,NORECOVERY|RECOVERY ,NORECOVERY|RECOVERY【例【例10-17】p假设对假设对“学生管理学生管理”数据库先后做了完全数据库备份(如例数据库先后做了完全数据库备份(如例10-910-9)、差异数据库备份(如例)、差异数据库备份(如例10-1110-11)和事务日志备份(如例)和事务日志备份(如例10-1410-14),现在利用这),现在利用这3 3个备份来恢复数据库。个备份来恢复数据库。-恢复完全备份恢复完全备份RESTORE DATABASE RESTORE DATABASE 学生管理学生管理FROM mycopy1FROM mycopy1WITHWITHFILE=1,FILE=1,NORECOVERYNORECOVERY-这时数据库无法使用,继续恢复差异备份这时数据库无法使用,继续恢复差异备份RESTORE DATABASE RESTORE DATABASE 学生管理学生管理FROM mycopy1FROM mycopy1WITHWITHFILE=2,FILE=2,NORECOVERYNORECOVERY-这时数据库仍然无法使用,继续恢复事务日志备份这时数据库仍然无法使用,继续恢复事务日志备份RESTORE LOG RESTORE LOG 学生管理学生管理FROM Mylog1 FROM Mylog1 WITHWITHRECOVERY -RECOVERY -完成恢复,数据库可以使用完成恢复,数据库可以使用10.4 数据库快照数据库快照 10.4.1 10.4.1 数据库快照的概念数据库快照的概念10.4.2 10.4.2 创建数据库快照创建数据库快照10.4.3 10.4.3 查看数据库快照查看数据库快照10.4.4 10.4.4 恢复到数据库快照恢复到数据库快照10.4.5 10.4.5 删除数据库快照删除数据库快照10.4.1 数据库快照的概念p数据库快照的工作原理。数据库快照的工作原理。10.4.2 创建数据库快照创建数据库快照 p在在CREATE DATABASECREATE DATABASE语句中使用语句中使用AS AS SNAPSHOT OFSNAPSHOT OF子句,可以创建指定数据子句,可以创建指定数据库的快照,基本语法如下:库的快照,基本语法如下:CREATE DATABASE CREATE DATABASE ON ON(NAME=(NAME=,FILENAME=FILENAME=)AS SNAPSHOT OF AS SNAPSHOT OF;数据库快照名称中通常可以包含如下信息数据库快照名称中通常可以包含如下信息 p源数据库名称。p标识此名称为数据库快照的信息。p快照的创建日期或时间、序列号或一些其他的信息。数据库快照名称的例子数据库快照名称的例子 p例如,为例如,为HrSystemHrSystem数据库创建快照,创数据库创建快照,创建时间为每天的建时间为每天的6:006:00、12:0012:00和和18:0018:00,可以分别为它们做如下命名:可以分别为它们做如下命名:pHrSystem_snapshot_0600HrSystem_snapshot_0600pHrSystem_snapshot_1200HrSystem_snapshot_1200pHrSystem_snapshot_1800HrSystem_sna