第11章 数据备份、恢复和报表 本章概述: 本章主要讲解如何规划数据库的日常备份策略,以及当数据库发生故障时应当采取怎样的手段进行数据恢复。本章首先讲解了如何制订备份策略,然后说明了如何进行备份和还原。同时,本章还介绍了数据库快照以及系统数据库恢复的问题。学生需要掌握多种备份策略,包括完整备份、差异备份、日志备份以及快照备份,同时需要了解应该在何种场合下使用相应的策略。 教学目标: 了解规划备份策略。 掌握备份用户数据库。 掌握还原用户数据库。 掌握从数据库快照恢复数据。 了解系统数据库和灾难恢复。 教学重点: 掌握备份数据库的方法。 掌握还原数据库的方法。 掌握数据库快照的使用方法。 教学难点: 学生对于灾难恢复的场景以及进行备份规划的场景缺乏了解,无法认识到备份是一件日常工作。 教学资源: 11.1 规划备份策略 11.2 备份用户数据库 11.3 还原用户数据库 11.4 从数据库快照恢复数据 11.5 系统数据库和灾难恢复 建议学时数 3课时课堂教学+2课时实验教学
本章的学习目标: 掌握数据库的导入、导出方法 理解数据库的备份策略 掌握如何创建备份 理解数据库的还原策略 掌握还原数据库的方法 掌握分离和附加数据库
11.1 数据库的导入导出 通过导入导出操作可以在SQL Server 2008和其他异类数据源(例如Excel或Oracle数据库)之间轻松地移动数据。例如,可以将数据从Excel应用程序导出到数据文件,然后将该数据文件导入到SQL Server表中。导出是指将数据从SQL Server表复制到数据文件中;导入是指将数据从数据文件加载到SQL Server表中。
11.1.1 数据库的导出 在SQL Server 2008中,可以将数据表中的数据在SQL Server Management Studio中导出。具体操作步骤如下: (1) 打开SQL Server Management Studio,右击“对象资源管理器”中的“实例数据库”对象,从弹出的快捷菜单中选择“任务”|“导出数据”命令,如图11-1所示。 (2) 在打开的“SQL Server导入和导出向导”对话框中,选择需要导出的数据源。
(3) 接下来选择导出数据的目标,即导出数据复制到何处。如果选择“SQL Native Client”选项,则将本机的SQL Server数据库数据导出到其他计算机的SQL Server服务器中; (4) 在这一步选择是从表中复制数据还是从查询中复制数据。本例中,选中“复制一个或多个表或视图的数据”单选按钮,
(5) 在“配置平面文件目标”对话框中,选择导出数据的源表或视图。在本例中,在“源表或源视图”下拉列表中选择“学生表”选项,如图11-5所示,然后单击“下一步”按钮。
(6) 这一步是保存并执行包,选中“立即执行”复选框,如图11-6所示,然后单击“下一步”按钮。
(7) 完成导出数据的向导设置后,单击“完成”按钮,如图11-7所示。
(8) 导出数据操作完成后,打开执行成功的界面,提示用户已经成功导出了6行数据,如图11-8所示。
11.1.2 数据库的导入 在SQL Server 2008中,也可以在SQL Server Management Studio中将数据导入到数据库表中。 为了演示数据的导入操作,本例将上一节导出操作所导出的数据导入到“实例数据库”中,具体操作步骤如下:
(1) 打开SQL Server Management Studio,右击“对象资源管理器”中的“实例数据库”对象,从弹出的快捷菜单中选择“任务”|“导入数据”命令,如图11-10所示。
(3) 此时可以看到将要导入的数据记录,如图11-12所示,然后单击“下一步”按钮。 (4) 在“选择目标”对话框中,指定导入数据的数据库为“实例数据库”,如图11-13所示,然后单击“下一步”按钮。 (5) 接下来,设置要复制的表到目标数据库的映射,单击“映射”列下的“编辑”按钮,如图11-14所示。 (6) 在弹出的“列设置”对话框中,设置目标数据库中表的各列属性,可以修改各个列的名称和数据类型以符合需要,如图11-15所示,然后单击“确定”按钮。
(7) 返回“SQL Server导入和导出向导”对话框,选中“立即执行”复选框,如图11-16所示,然后单击“下一步”按钮。 (8) 完成导入数据的向导设置后,单击“完成”按钮,如图11-17所示。 (9) 导入数据操作完成后,自动打开执行成功的界面,提示用户已成功导入了6行数据,如图11-18所示。打开“实例数据库”查看导入的数据表,可以看到该表中已导入的学生信息,如图11-19所示。
11.2 数据库的备份与还原 尽管在SQL Server 2008中采取了许多措施来保证数据库的安全性和完整性,但故障仍不可避免。同时还存在其他一些可能造成数据丢失的因素,例如,用户的操作失误、蓄意破坏、病毒攻击和自然界不可抗力等。因此,SQL Server 2008制定了一个良好的备份还原策略,定期将数据库进行备份以保护数据库,以便在事故发生后能够还原数据库。
11.2.1 数据库的备份 Microsoft SQL Server 2008提供了4种不同的备份方式:完整备份和完整差异备份、部分备份和部分差异备份、事务日志备份、数据库文件和文件组备份。 (1) 完整备份和完整差异备份 (2) 部分备份和部分差异备份 (3) 事务日志备份 (4) 数据库文件和文件组备份
SQL Server 备份类型 描述 备份类型 完整备份 完整备份包含所有数据文件和部分事务日志 事务日志备份 所有数据库更改 尾日志备份 包含上一次未备份的日志部分(称为日志的“活动部分”)的事务日志备份 差异备份 备份上一次完整数据库备份之后被更改的数据库部分 文件或文件组备份 制定的文件或文件组 部分备份 包含主文件组、每个读写文件组以及所有指定的读写文件中的全部数据 仅复制备份 数据库或日志 (不影响整体备份)
2. 创建备份设备 磁带备份设备的用法与磁盘设备相同,但必须注意以下两点: (1) 磁带设备必须物理连接到运行SQL Server的计算机上。不支持备份到远程磁带设备上。 (2) 如果磁带备份设备在备份操作过程中已满,但还需要写入一些数据,SQL Server将提示更换新磁带并继续备份操作。 备份设备:在备份操作过程中,将要备份的数据(即“备份数据”)写入物理备份设备。“物理备份设备”是指磁带机或操作系统提供的磁盘文件。可以将备份数据写入 1 到 64 个备份设备。如果备份数据需要多个备份设备,则所有设备必须对应于一种设备类型(磁盘或磁带)。
3. 备份的执行 SQL Server系统提供了两种数据库备份操作的方法:SQL Server管理平台和Transact-SQL语句。 使用备份向导
例【11-1】:将“实例数据库”备份到备份设备“实例数据库.bak”中,使用WITH FORMAT子句初始化备份设备。 T-SQL语句如下: BACKUP DATABASE 实例数据库 TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup \实例数据库.bak' WITH FORMAT
11.2.2 数据库的还原 1. 还原概述 数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中还原数据库。数据库还原是指将数据库备份加载到系统中的过程。系统在还原数据库的过程中,自动执行安全性检查、重建数据库结构以及完成填写数据库内容。安全性检查是还原数据库必不可少的操作。这种检查可以防止偶然使用了错误的数据库备份文件或者不兼容的数据库备份覆盖已经存在的数据库。SQL Server还原数据库时,根据数据库备份文件自动创建数据库结构,并且还原数据库中的数据。
2. 还原数据库 由于数据库的还原操作是静态的,所以在还原数据库时,必须限制用户对该数据库进行其他操作,因此在还原数据库之前,首先要设置数据库访问属性。在SQL Server管理平台中,在需要还原的数据库上单击鼠标右键,从弹出的快捷菜单中选择“属性”命令,打开“数据库属性”对话框,在此对话框中选择“选项”选项页。
使用SQL Server管理平台还原数据库
使用Transact-SQL语句还原数据库 Transact-SQL提供了restore语句来还原数据库,其语法格式如下: restore database [from <backup_device[ ],…n>] [with [[,]file=file_number] [[,]move 'logical_file_name' to 'operating_system_file_name'] [[,]replace] [[,]{norecovery|recovery|standby=undo_file_name}] ] <backup_device>::={{backup_device_name|@backup_device_name_evar} |{disk|tape|pipe} ={temp_backup_device|@temp_backup_device_var}
11.3 自动化管理任务 作为SQL Server 2008的数据库管理员,有许多日常工作是相同或相似的,而且需要每天(或每隔一段时间)重复操作。这就使这份工作变得有些枯燥乏味。为了使管理更加方便,SQL Server 2008提供了自动化管理任务的机制,很多具有重复性的工作可以交给SQL Server 2008来自动完成。
11.3.1 多服务器管理 (1) 在下列情况下使用多服务器管理: 管理两个或更多的服务器 为数据仓库在企业服务器之间调度信息数据流
(2) 创建多服务器环境时,需要考虑如下事项: 每个目标服务器只向一个主服务器报告。在将目标服务器登记到另一个主服务器上之前,必须使它与现有的主服务器脱离。 主服务器和目标服务器必须在Windows NT 4.0或Window 2000操作系统中运行。 更改目标服务器的名称时,必须先与主服务器脱离,而且更改后要重新登记。 若要取消多服务器配置,必须使所有目标服务器脱离主服务器。
11.3.2 SQL Server 2008代理服务配置 SQL Server代理允许自动处理不同的管理任务,但是在这样做之前必须保证启动了SQL Server代理。在SQL Server管理平台中,展开指定的服务器,用鼠标右键单击SQL Server代理图标,从弹出的快捷菜单中选择“启动”命令,即可启动SQL Server代理。启动以后可以利用SQL Server管理平台对其进行配置。
11.4 分离和附加数据库 在进行分离和附加数据库操作时,首先要注意以下几点: 11.4 分离和附加数据库 在进行分离和附加数据库操作时,首先要注意以下几点: (1) 不能进行更新,不能运行任务,用户也不能连接在数据库上。 (2) 在移动数据库之前,为数据库做一个完整的备份。 (3) 确保数据库要移动的目标位置及将来数据增长有足够的空间。 (4) 分离数据库并没有将其从磁盘上真正的删除。如果需要,可以对数据库的组成文件进行移动、复制或删除。
11.4.1 分离和附加数据库的操作 1. 分离数据库的操作 2. 附加数据库的操作
11.4.2 使用T-SQL进行分离和附加数据库操作 1. 分离数据库 分离数据库需要db_owner来完成,具体的语法格式如下: Sp_detach_db [@dbname= ] 'dbname' [ , [ @skipchecks= ] 'skipchecks' ] [ , [ @KeepFulltextIndexFile= ] ‘KeepFulltextIndexFile’] dbname:要分离的数据库名称。如果没有该选项,则没有数据库能被分离。 skipchecks:设置为NULL,则会更新统计信息。设置为true,则会跳过对统计信息的更新。 KeepFulltextIndexFile:设置为true,则保留该数据库中所生成的所有全文索引文件。
2. 附加数据库 附加数据库的语法格式如下: CREATE DATADASE database_name ON <filespec> [ , …n ] FOR { ATTACH [ WITH < service_broker_option> ] | ATTACH_REBUILD_LOG }
(1) 关闭数据库的活动连接,打开查询编辑器窗口,输入sp_detach_db代码,完成输入后,运行该代码。将会在执行窗口中出现“命令已成功完成”的信息,如图11-46所示。此时数据库已被成功的分离了。 代码如下: USE master GO sp_detach_db ' 实例数据库 '
(2) 附加数据库,在同一个查询编辑器窗口中输入如下代码,如图11-47所示。用FILENAME参数替换数据库所在的位置,并确保该路径被写入一行中。 代码如下: CREATE DATABASE 实例数据库 ON (FILENAME='D:\Program Files\Microsoft SQL Server\ MSSQL.1\MSSQL\Data\实例数据库.mdf') FOR ATTACH
11.5 报表服务 作为数据库应用程序的重要组成部分,Reporting Services提供了如下功能: 11.5 报表服务 作为数据库应用程序的重要组成部分,Reporting Services提供了如下功能: 一个高性能引擎用来处理和格式化报表; 一个完整的工具集用来创建、管理和查看报表; 一个可扩展架构和开放式接口可将报表嵌入或集成报表解决方案到不同的IT环境中。
备份系统数据的注意事项 备份系统数据库: 修改 master 数据库之后 修改 msdb 数据库之后 修改 model 数据库之后 利用 CREATE DATABASE、 ALTER DATABASE或 DROP DATABASE 语句 执行特定存储过程 修改 msdb 数据库之后 修改 model 数据库之后
还原系统数据库的注意事项 从备份中还原 master、model 和 msdb 数据库 SQL Server Management Studio 创建对象的脚本 依附未损坏的数据库重建而不是还原
还原 master 数据库的方法 如果仍可访问 master 数据库 如果 master 数据库损坏严重 以单用户模式启动 SQL Server 从最新备份中还原 master 数据库 重启服务器 如果 master 数据库损坏严重 用 Setup.exe重新构建 master 数据库 还原 master 数据库 还原 msdb 和 model 数据库 1 2 3 1 2 3
实验 高级AdventureWorks数据库管理员要求你实现AdventureWorks数据库的灾难恢复策略。 需要可重用的备份设备 必须备份日志文件 日常完整备份必须由若干差异备份组成