250 likes | 366 Views
数据库原理与 SQL Server. 第 7 章 复制和恢复数据库. 第 7 章 复制和恢复数据库. 7.1 同一数据库服务器上备份数据库 — 数据库备份还原 7.2 不同数据库服务器间转移数据库 — 附加数据库 7.3 不同数据格式的转换 — 数据库数据导入导出 实训 数据复制与恢复. 7.1 同一数据库服务器上备份数据库 — 数据库备份还原. 为保证数据的安全性,必须定期进行数据库的备份,当数据库损坏或系统崩溃时,可以将过去制作的备份还原到数据库服务器中。
E N D
数据库原理与SQL Server 第7章 复制和恢复数据库
第7章 复制和恢复数据库 • 7.1 同一数据库服务器上备份数据库 —数据库备份还原 • 7.2 不同数据库服务器间转移数据库 —附加数据库 • 7.3 不同数据格式的转换 —数据库数据导入导出 实训 数据复制与恢复
7.1 同一数据库服务器上备份数据库—数据库备份还原 为保证数据的安全性,必须定期进行数据库的备份,当数据库损坏或系统崩溃时,可以将过去制作的备份还原到数据库服务器中。 利用附加数据库也可以实现数据库的备份和还原,但SQL Server 2000提供了更完善的备份、还原功能。
7.1.1 数据库的备份 1.备份的概念 数据库备份包括了数据库结构和数据。 同时,备份的对象不但包括用户数据库,而且还包括系统数据库。
2.备份设备 备份设备是指备份内容的存储介质。 包括disk(硬盘文件)、tape(磁带)以及pipe(命名管道)。 其中,硬盘文件是最常用的设备介质。
3.备份类型 完全备份:对数据库整体的备份。 差异备份:对数据库自前一个完全备份后改动的部分的备份。 事务日志备份:对数据库事务日志的备份。 文件或文件组备份:对组成数据库的数据文件的备份。 只有进行了完全备份后才能进行差异备份以及事务日志备份。
4.使用SQL语句 (1)创建一个备份设备。 sp_addumpdevice ' <设备介质> ', ' <备份设备名> ', '<物理文件>' (2)数据库完全备份。 BACKUP DATABASE <数据库名> TO <备份设备名> (3)数据库差异备份。 BACKUP DATABASE <数据库名> TO <备份设备名> WITH DIFFERENTIAL (4)事务日志备份。 BACKUP LOG <数据库名> TO <备份设备名>
4.使用SQL语句 例7-1 制作数据库student的备份。 脚本:
5.使用SQL-EM (1)启动SQL-EM,在左侧窗口中展开指定数据库服务器“管理”文件夹,单击“备份”结点。 (2)指向左侧窗口的“备份”结点,单击右键,选择“新建备份设备”命令。 (3)输入备份设备名、对应的物理文件名。单击“确定”按钮,完成创建备份设备。 (4)指向要备份的数据库,单击右键,选择“所有任务”→“备份数据库”命令,设置备份类型,单击“添加”按钮 。 (5)指定备份的物理文件名,也可以在“备份设备”输入框中指定备份的备份设备名,单击“确定”按钮,设置备份的各项参数。
7.1.2 数据库的还原 1.还原的概念 数据库的还原是指将数据库的备份加载到系统中,是与备份相对应的操作。备份是还原的基础,没有备份就无法还原。 一般来说,因为备份是在系统正常的情况下执行的操作,而还原是在系统非正常情况下执行的操作,所以还原相对要比备份复杂。
2. 还原模型 (1)简单还原:在进行数据库还原时仅使用数据库备份或差异备份,而不涉及事务日志备份。 (2)完全还原:通过使用数据库备份和事务日志备份将数据库还原到发生失败的时刻。 (3)大容量日志记录还原:在性能上要优于简单还原和完全还原模型,能尽量减少批操作所需的存储空间。
3.使用SQL语句 (1)从数据库备份中还原 RESTORE DATABASE <数据库名> FROM <备份设备名> [WITH NORECOVERY] (2)从事务日志备份中还原 RESTORE LOG <数据库名> FROM <备份设备名> [WITH NORECOVERY] 其中,要继续从后续备份中还原数据必须带参数WITH NORECOVERY,且数据库不可用。 (3)从指定还原点还原 RESTORE LOG <数据库名> FROM <备份设备名> WITH RECOVERY,STOPAT='<日期> <时间>'
3.使用SQL语句 例7-2 用例7-1制作的备份还原数据库student。 脚本: 例7-3 定点还原实例。 说明:按步骤完成以下操作,其中的注释语句可以在SQL-EM中进行,其余语句可以在查询分析器中执行。本例说明如何使用事务日志备份将数据库还原至任一时间点。 操作步骤:
4.使用SQL-EM (1)启动SQL-EM,指向左侧窗口要备份的“数据库”结点,单击右键,选择“所有任务”→“还原数据库”命令 。 (2)系统默认从最近一次的完全备份以及其后的所有差异备份、事务日志备份还原数据库。单击选中“还原”单选框中的“从设备”选项,可以选择从指定备份设备还原数据库;单击选中“参数”复选框中“时点还原”选项,可以按指定时间点还原数据库;单击“参数”复选框中的“还原”选项,可以在还原中增减备份设备。 (3)单击“确定”按钮,完成还原。
5.系统数据库的还原 在SQL Server 2000中,系统数据库存储的是系统信息。如果系统数据库被破坏,就必须还原系统数据库。 系统数据库的还原分两种情况,当SQL Server服务可以启动时,可以用还原用户数据库的方法还原系统数据库。 当SQL Server服务不能启动时,还原系统数据库方法为: (1) 运行C:\Program Files\Microsoft SQL Server\80\ Tools\Binn下的文件“Rebuildm.exe”,重建系统数据库。 (2) 启动SQL Server服务。 (3) 按Master、Msdb、Model的顺序还原系统数据库。
7.2不同数据库服务器间转移数据库—附加数据库7.2不同数据库服务器间转移数据库—附加数据库 附加数据库主要用于在不同的数据库服务器之间转移数据库。 在SQL Server 2000中,与一个数据库相对应的数据文件和日志文件都是Windows系统中的一般磁盘文件,用标准的方法直接进行文件复制后,再“附加”到SQL Server 2000中,就能够达到复制和恢复数据库的目的。
1. 使用SQL语句 sp_attach_db '<数据库名>', '<数据文件名>', '<事务日志文件名>' 例7-4 对数据库student进行附加操作。 (1)将d:\example\student_data.mdf和student_log.ldf复制到的d:\。 (2)删除数据库student。 (3)将d:\下的student_data.mdf和student_log.ldf复制到d:\example。 (4)启动“查询分析器”,输入SQL语句: execute sp_attach_db 'student', 'd:\example\student_data.mdf', 'd:\example\student_log.ldf' (5)单击“执行查询”按钮。
2.使用SQL-EM (1)启动SQL-EM,指向左侧窗口“数据库”结点,单击右键,选择“所有任务”→“附加数据库”命令。 (2)在“要附加数据库的MDF文件”输入框中指定要附加的主数据文件。 (3)单击“确定”按钮,完成数据库附加。
7.3 不同数据格式的转换—数据库数据导入导出 数据导入、导出主要用于在SQL Server 2000与其他数据库管理系统或其他数据格式之间进行交换数据,也可以在不同的SQL Server 2000服务器之间传递数据。 当然,利用数据的导入、导出也可以实现数据库的备份和还原。 在SQL Server 2000中,数据导入、导出是通过DTS(Data Transformation Services,即数据转换服务)实现的。
7.3.1 数据导入/导出 1. 数据导出 (1)创建导出文件。 (2)启动SQL-EM,指向要导出数据的数据库结点,单击右键,选择“所有任务”→“导出数据”命令 。 (3)在“数据源”下拉列表框中选择数据源类型为“用于SQL Server的Microsoft OLE DB提供程序” ,在“数据库”下拉列表框中选择源数据库。 (4)在“目的”下拉列表框中选择导出数据的数据格式类型,在“文件名”文本框中指定目标文件。 (5)选择导出数据的表,选择“立即运行”,完成数据导出。
7.3.1 数据导入/导出 例7-5 将STUDENT中的数据导入到ACCESS的数据库STUDENT_ACCESS中。 (1)启动Microsoft Access,创建一个新数据库student_access。 (2)启动SQL-EM,指向“student”结点,单击右键,选择“所有任务”→“导出数据”命令。 (3)在“数据源”下拉列表框中选择“用于SQL Server的Microsoft OLE DB提供程序”,在“数据库”下拉列表框中选择源数据库“student”。 (4)在“目的”下拉列表框中选择导出数据的数据格式类型“Microsoft Access”。在“文件名”文本框中指定目标文件“student_access.mdb”。 (5)单击“全选”按钮选择导出所有表中的数据。 (6)选择“立即运行”复选框 ,单击“完成”按钮,完成数据导出。
2. 数据导入 (1)创建导入数据库。 (2)启动SQL-EM,指向要导出数据的数据库结点,单击右键,选择“所有任务”→“导入数据”命令 。 (3)在“数据源”下拉列表框中选择导入数据的数据格式类型为“用于SQL Server的Microsoft OLE DB提供程序” ,在“文件名”文本框中指定源文件。 (4)在“目的”下拉列表框中选择数据源类型,在“数据库”框中选择目的数据库。 (5)选择导入数据的数据来源,选择“立即运行”复选框,完成数据导入。
2. 数据导入 例7-6 将ACCESS的数据库STUDENT_ACCESS中的数据导入到STUDENT数据库中。 (1)启动SQL-EM,指向左侧窗口数据库“student”结点,单击右键,选择“所有任务”→“导入数据”命令 。 (2)单击“下一步”按钮,在“数据源”下拉列表框中选择数据源类型为“Microsoft Access”,在“文件名”文本框中指定目标文件为“d:\example\student_access.mdb”。 (3)在“目的”下拉列表框中选择导出数据的数据格式类型为“用于SQL Server的Microsoft OLE DB提供程序”,在“数据库”下拉列表框中选择源数据库为“student”。 (4)单击“全选”按钮选择导入所有表中的数据。 (5)选择“立即运行”复选框,完成数据导入 。
7.3.2 利用数据导入/导出转移数据库 使用数据导入/导出,也可以完成数据库转移,尽管不常用。 (1)复制数据库结构。在SQL-EM中,指向要复制的数据库结点,单击右键,选择“所有任务”→“生成SQL脚本”命令。 (2)导出数据库数据。使用DTS导出数据库数据到目标文件。 (3)创建数据库。 (4)生成数据库结构。在查询分析器中执行数据库结构的SQL脚本文件,生成指定的数据库。 (5)导入数据库数据。使用DTS将目标文件中的数据导入目的数据库。生成数据库的SQL脚本文件时,必须在“选项”选项卡中选中安全性脚本选项以及表脚本选项,否则恢复的数据库将丢失数据完整性约束、触发器和索引等。
实训 数据复制和恢复 实验名称:数据库数据的复制与恢复 目的要求:掌握SQL Server 2000中有关数据的复制与恢复的相关方法 操作步骤: (1)将student数据库对应文件student.mdf和student.ldf复制至D盘<班级>_<学号> _student文件夹中。 (2)使用SQL-EM附加数据库,指定数据库名为<班级>_<学号>_student,主数据文件为D盘<班级>_<学号>_student文件夹中的student.mdf。 (3)使用SQL语句创建disk类型的备份设备,备份设备名为<班级>_<学号>_s_bak,物理文件为D盘<班级>_<学号>_student文件夹中的<班级>_<学号>_s_bak.bak。 (4)在数据库<班级>_<学号>_student中任意创建表t。 (5)使用SQL语句将数据库<班级>_<学号>_student完全备份至备份设备<班级>_<学号> _s_bak上。 (6)删除表t。 (7)使用SQL语句从备份设备<班级>_<学号>_s_bak上还原数据库<班级>_<学号> _student。 (8)将数据库<班级>_<学号>_student表<班级>_<学号>_s的数据导入Excel文件。