Download presentation
Presentation is loading. Please wait.
1
8.1 备份和恢复概述 8.1.1 备份和恢复需求分析
2
8.1.1 备份和恢复需求分析 数据库中的数据丢失或被破坏可能是由于以下原因:
备份和恢复需求分析 数据库中的数据丢失或被破坏可能是由于以下原因: (1)计算机硬件故障。由于使用不当或产品质量等原因,计算机硬件可能会出现故障,不能使用。如硬盘损坏会使得存储于其上的数据丢失。 (2)软件故障。由于软件设计上的失误或用户使用的不当,软件系统可能会误操作数据引起数据破坏。 (3)病毒。破坏性病毒会破坏系统软件、硬件和数据。 (4)误操作。如用户误使用了诸如DELETE、UPDATE等命令而引起数据丢失或被破坏。 (5)自然灾害。如火灾、洪水或地震等,它们会造成极大的破坏,会毁坏计算机系统及其数据。 (6)盗窃。一些重要数据可能会遭窃。
3
8.1.2 数据库备份的基本概念 1. 备份内容 2. 由谁做备份 3. 备份介质
数据库备份的基本概念 1. 备份内容 2. 由谁做备份 (1) 在SQL Server 2000中,具有下列角色的成员可以做备份操作: (2) 固定的服务器角色sysadmin(系统管理员); (3) 固定的数据库角色db_owner(数据库所有者); (4) 固定的数据库角色db_backupoperator。 3. 备份介质 (1) 硬盘:是最常用的备份介质。硬盘用于备份本地文件,也用于备份网络文件。 (2) 磁带:是大容量的备份介质,磁带仅可用于备份本地文件。 (3) 命名管道(Named Pipe):它是一种逻辑通道,SQL Server 2000允许将备份的文件放在命名管道上,从而可以允许利用第三方软件包的备份和恢复能力。
4
8.1.2 数据库备份的基本概念 4. 何时备份 5. 备份频率 6. 限制的操作 7. 备份方法 8. 性能考虑 (1)完全数据库备份
数据库备份的基本概念 4. 何时备份 5. 备份频率 6. 限制的操作 7. 备份方法 (1)完全数据库备份 (2)数据库和事务日志备份 (3)差异备份 (4)数据库文件或文件组备份 8. 性能考虑 备份一个数据库所需的时间主要取决于物理设备的速度,如磁盘设备的速度通常比磁带设备快; 通常备份到多个物理设备比备份到一个物理设备要快; (3) 系统的并发活动对数据库的备份有影响;
5
8.1.3 数据库恢复概念 1. 准备工作 数据库恢复的准备工作包括系统安全性检查和备份介质验证。 2. 执行恢复数据库的操作
数据库恢复概念 1. 准备工作 数据库恢复的准备工作包括系统安全性检查和备份介质验证。 系统发现出现了以下情况时,恢复操作将不进行: (1) 指定的要恢复的数据库已存在,备份文件中记录的数据库与其不同; (2) 服务器上数据库文件集与备份中的数据库文件集不一致; (3) 未提供恢复数据库所需的所有文件或文件组。 这些信息包括: 备份文件或备份集名及描述信息; 所使用的备份介质类型(磁带或磁盘等); 所使用的备份方法; 执行备份的日期和时间; 备份集的大小; 数据库文件及日志文件的逻辑和物理文件名; 备份文件的大小。 2. 执行恢复数据库的操作
6
8.2.1 创建备份设备 1. 创建命名备份设备 1)使用系统存储过程创建命名备份设备
创建备份设备 1. 创建命名备份设备 1)使用系统存储过程创建命名备份设备 执行系统存储过程sp_addumpdevice可以在磁盘或磁带上创建命名备份设备,也可以将数据定向到命名管道。 创建命名备份设备时,要注意以下几点: (1) SQL Server 2000将在系统数据库master的系统表sysdevice中,创建该命名备份设备的物理名和逻辑名。 (2) 必须指定该命名备份设备的物理名和逻辑名,当在网络磁盘上创建命名备份设备时,要说明网络磁盘文件路径名。 (3) 一个数据库最多可以创建32个备份文件 语法格式: sp_addumpdevice = ] 'device_type', = ] 'logical_name', = ] 'physical_name'
7
8.2.1 创建备份设备 2)使用企业管理器创建命名备份设备 在SQL Server企业管理器中创建命名备份设备,步骤是:
创建备份设备 2)使用企业管理器创建命名备份设备 在SQL Server企业管理器中创建命名备份设备,步骤是: 第1步 用管理员帐号登录SQL Server; 第2步 运行SQL Server企业管理器; 第3步 在控制台目录树中,展开服务器组和服务器,展开“管理”文件夹,在“备份”上单击鼠标右键,选择“新建备份设备”。
8
创建备份设备 第4步 上一步操作完成后,出现如图所示的对话框,在该对话框中有两个文本框,分别输入备份设备的逻辑名和完整的物理路径名。输入完毕后,单击“确定”按钮,则新的备份设备就创建完成了,如图8.3所示。
9
8.2.1 创建备份设备 2. 创建临时备份设备 【例8.3】在磁盘上创建一个临时备份设备,它用来备份数据库XSCJ。 语法格式:
创建备份设备 2. 创建临时备份设备 语法格式: BACKUP DATABASE { database_name } TO <backup_file> [, …n ] <backup_file>::= { { backup_file_name } | { DISK | TAPE | PIPE } = { temp_file_name } 【例8.3】在磁盘上创建一个临时备份设备,它用来备份数据库XSCJ。 USE master BACKUP DATABASE XSCJ TO 'e:\temp\tmpxscj.ba’
10
创建备份设备 3. 使用多个备份设备 SQL Server可以同时向多个备份设备写入数据,即进行并行的备份。并行备份将需备份的数据分别备份在多个设备上,这多个备份设备构成了备份集。
11
备份命令 1. 备份整个数据库 语法格式: BACKUP DATABASE { database_name } /*被备份的数据库名*/ TO < backup_device > [ ,...n ] /*指出备份目标设备*/ [ WITH [ BLOCKSIZE = { blocksize } ] /*块大小*/ [ [ , ] DESCRIPTION = { 'text' } ] /*备份集的自由格式文本*/ [ [ ,] EXPIREDATE = { date } /*备份集到期和允许被重写的日期*/ | RETAINDAYS = { days } ] [ [ , ] PASSWORD = { password } ] [ [ , ] FORMAT | NOFORMAT ] [ [ , ] { INIT | NOINIT } ] /*指定是覆盖还是追加*/ [ [ , ] MEDIADESCRIPTION = { 'text' } ] [ [ , ] MEDIANAME = { media_name } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] [ [ , ] NAME = { backup_set_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOSKIP | SKIP } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ]
12
8.2.2 备份命令 使用企业管理器查看备份设备的内容。步骤如下:
备份命令 使用企业管理器查看备份设备的内容。步骤如下: 第1步 在企业管理器的控制台目录树上,展开“管理”文件夹,单击“备份”,在右边窗口中选定备份设备,在其上单击鼠标右键如图所示。
13
8.2.2 备份命令 第2步 上一步操作结束后,将出现如图所示的备份设备属性对话框,单击“查看内容”按钮。
备份命令 第2步 上一步操作结束后,将出现如图所示的备份设备属性对话框,单击“查看内容”按钮。 第3步 上一步操作结束后,将出现如图所示的查看备份媒体内容对话框,其中显示了所要查看的备份设备的内容。
14
8.2.2 备份命令 【例8.4】使用逻辑名test1创建一个命名的备份设备,并将数据库XSCJ完全备份到该设备。 USE master
备份命令 【例8.4】使用逻辑名test1创建一个命名的备份设备,并将数据库XSCJ完全备份到该设备。 USE master EXEC sp_addumpdevice 'disk' , 'test1', 'e:\db_temp\test1.bak' BACKUP DATABASE XSCJ TO test1
15
8.2.2 备份命令 【例8.5】将数据库XSCJ备份到多个备份设备。 USE master
备份命令 【例8.5】将数据库XSCJ备份到多个备份设备。 USE master EXEC sp_addumpdevice 'disk','test2','e:\db_temp\test2.bak' EXEC sp_addumpdevice 'disk','test3','e:\db_temp\test3.bak' BACKUP DATABASE XSCJ TO test2,test3 WITH NAME = 'xscjbk'
16
8.2.2 备份命令 2. 差异备份数据库 【例8.6】创建临时备份设备并在所创建的临时备份设备上进行差异备份。 语法格式:
备份命令 2. 差异备份数据库 语法格式: BACKUP DATABASE { database_name } TO <backup_device> [ , … n ] [ WITH [ [ , ] DIFFERENTIAL ] /*其余选项与相数据库的完全备份同*/ ] 【例8.6】创建临时备份设备并在所创建的临时备份设备上进行差异备份。 BACKUP DATABASE XSCJ TO DISK ='e:\db_temp\xscjbk.bak' WITH DIFFERENTIAL
17
8.2.2 备份命令 3. 备份数据库文件或文件组 语法格式:
备份命令 3. 备份数据库文件或文件组 语法格式: BACKUP DATABASE { database_name } < file_or_filegroup > [ ,...n ] /*指定文件或文件组名*/ TO < backup_device > [ ,...n ] [ WITH [ BLOCKSIZE = { blocksize } ] [ [ , ] DESCRIPTION = { ' text' } ] [ [ ,] EXPIREDATE = { date } | RETAINDAYS = { days } ] [ [ , ] PASSWORD = { password } ] [ [ , ] FORMAT | NOFORMAT ] [ [ , ] { INIT | NOINIT } ] [ [ , ] MEDIADESCRIPTION = { 'text' } ] [ [ , ] MEDIANAME = { media_name } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] [ [ , ] NAME = { backup_set_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOSKIP | SKIP } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ]
18
备份命令 4. 事务日志备份 语法格式: BACKUP LOG { database_name } /* 指出被备份的数据库名*/ TO < backup_device > [ ,...n ] /*指出备份目标*/ [ WITH [ BLOCKSIZE = { blocksize } ] /*块大小*/ [ [ , ] DESCRIPTION = { 'text' } ] /*备份集的自由格式文本*/ [ [ ,] EXPIREDATE = { date } /*备份集到期和允许被重写的日期*/ | RETAINDAYS = { days } ] [ [ , ] PASSWORD = { password } ] [ [ , ] FORMAT | NOFORMAT ] [ [ , ] { INIT | NOINIT } ] [ [ , ] MEDIADESCRIPTION = { 'text' } ] [ [ , ] MEDIANAME = { media_name } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] [ [ , ] NAME = { backup_set_name } ] [ [ , ] NO_TRUNCATE ] [ [ , ] { NORECOVERY | STANDBY = undo_file_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOSKIP | SKIP } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ]
19
8.2.2 备份命令 【例8.8】创建一个命名的备份设备XSCJLOGBK,并备份XSCJ数据库的事务日志。 USE master
备份命令 【例8.8】创建一个命名的备份设备XSCJLOGBK,并备份XSCJ数据库的事务日志。 USE master EXEC sp_addumpdevice 'disk' , 'XSCJLOGBK' , 'e:\db_temp\testlog.bak' BACKUP LOG XSCJ TO XSCJLOGBK
20
备份命令 5. 清除事务日志 语法格式: BACKUP LOG { database_name } { [ WITH { NO_LOG | TRUNCATE_ONLY } ] } 其中: (1) (2) 使用TRANCATE_ONLY选项,SQL Server系统将删除事务日志中不活动部分的内容,而不进行任何备份,因此可以释放事务日志所占用的部分磁盘空间。 NO_LOG选项与TRUNCATE_ONLY是同义的。 执行带有NO_LOG或TRUNCATE_ONLY选项的BACK LOG语句后,记录在日志中的更改将不可恢复。因此执行该语句后,应立即执行BACKUP DATABASE语句,进行数据库备份。
21
8.2.3 使用企业管理器进行备份 在SQL Server企业管理器中进行备份的步骤是:
使用企业管理器进行备份 在SQL Server企业管理器中进行备份的步骤是: 第1步 在SQL Server企业管理器窗口中打开服务器组和服务器,展开“管理”文件夹,右击“备份”选项,在弹出的菜单上选择“备份数据库…”选项,如图所示。
22
使用企业管理器进行备份 第2步 在所出现的如图8.12所示“SQL Server备份”对话框中选择被备份的数据库名、输入备份的目标(即命名的备份介质的名称或临时备份介质的位置)、备份的描述、备份的类型、以及选择备份为覆盖的还是追加 。
23
使用企业管理器进行备份 第3步 若使用临时备份介质,则在如图8.13所示的“选择备份目的”对话框中选择“文件名”,并在文本框中输入文件的全路径名,或点击按钮选择路径。
24
使用企业管理器进行备份 第4步 选择或输入了上一步指出的各参数后,在“SQL Server备份”对话框中单击“确定”按钮,系统将执行备份操作,并出现一个进度指示对话框,备份操作完成后,将出现如图8.15所示的提示框,点击“确定”。
25
8.2.4 使用备份向导进行备份 使用备份向导进行备份的步骤是:
第1步 在SQL Server企业管理器的“工具”菜单中选择:向导管理备份向导,将出现如图8.16所示的备份向导的欢迎界面,该界面给出了备份向导的功能。
26
8.2.4 使用备份向导进行备份 第2步 单击“下一步”,将出现如图8.17所示的选择需备份数据库的界面。
27
8.2.4 使用备份向导进行备份 第3步 选择要备份的数据库名,单击“下一步”,将出现如图8.18所示的输入备份名和描述的界面。
28
8.2.4 使用备份向导进行备份 第4步 输入备份名称和描述后,单击“下一步”,将出现如图8.19所示的选择备份类型的界面。
29
8.2.4 使用备份向导进行备份 第5步 选择备份类型后,单击“下一步”,将出现如图所示的选择备份设备以及备份属性(覆盖或追加)的界面。
30
8.2.4 使用备份向导进行备份 第6步 选择备份设备和属性后,单击“下一步”,将出现如图所示的备份验证和调度的界面。
31
使用备份向导进行备份 第7步 单击“下一步”,将出现如图所示的确认各备份参数的界面,单击“完成”。
32
8.3.1 检查点(check point) SQL Server系统定期将所有脏日志和数据页刷新到磁盘,这就称为检查点。
检查点执行以下操作: (1)将标记为检查点起点的记录写入日志文件。 (2)将为检查点记录的信息存储在检查点日志记录链内,将这条链起点的LSN写入数据库的根页。 (3)记录最小恢复日志序号(MinLSN),MinLSN是下面这些 LSN 中的最小LSN: ①检查点起点的LSN; ②最旧的活动事务起点的LSN; ③最早的复制事务起点的LSN,事务未复制到所有相关的服务器。 (4)记录所有未完成的活动事务列表。 (5)如果数据库使用的是简单恢复模式,则删除新的MinLSN之前的所有日志记录。 (6)将所有脏日志和数据页写入磁盘。 (7)将标记检查点末端的记录写入日志文件。
33
8.3.1 检查点(check point) 检查点操作将在下列情况下发生:
(2)使用ALTER DATABASE更改数据库选项时,对所修改的数据库执行检查点操作。 (3)当SQL Server系统由于下列原因之一停止运行时: ① 执行SHUTDOWN语句; ② 使用 SQL Server服务控制管理器阻止运行数据库引擎实例的服务。 (4)SQL Server系统为减少恢复数据库所需的时间而在每个数据库内定期执行自动检查点,SQL Server 2000始终生成自动检查点,自动检查点的时间间隔取决于日志内的记录数而不是时间。
34
8.3.2 数据库的恢复命令 (1)进行安全检查 (2)重建数据库 2. 恢复数据库的准备 当出现以下集中情况时,系统将不能恢复数据库:
使用与被恢复的数据库名称不同的数据库名去恢复数据库; 服务器上的数据库文件组与备份的数据库文件组不同; 需恢复的数据库名或文件名与备份的数据库名或文件名不同; (2)重建数据库 完全数据库备份中恢复数据库时,SQL Server将重建数据库文件,并把所重建的数据库文件置于备份数据库时这些文件所在的位置,所有的数据库对象都将自动重建,用户无需重建数据库的结构。 在SQL Server中,恢复数据库的语句是RESTORE。 2. 恢复数据库的准备 有两种方法可以得到有关数据库备份介质的信息: (1) 使用SQL Server企业管理器界面查看所有备份介质的属性
35
数据库的恢复命令 第1步 启动SQL Server企业管理器,展开所管理的服务器,展开“管理”文件夹,在指定的备份介质上点击鼠标右键,选择“属性”选项,如图所示。
36
8.3.2 数据库的恢复命令 第2步 在所出现的“备份设备属性”对话框中点击“查看内容…”按钮,将显示所选备份介质的有关信息,如图所示。
数据库的恢复命令 第2步 在所出现的“备份设备属性”对话框中点击“查看内容…”按钮,将显示所选备份介质的有关信息,如图所示。 第3步 在所出现的“查看备份媒体内容”对话框中将显示备份介质所在的服务器名、备份数据库名、备份类型、备份日期、到期日及大小等信息,如图所示。
37
数据库的恢复命令 (2) 使用RESTORE HEADONLY、RESTORE FILELISTONLY、RESTORE LABEL ONLY等语句可以得到有关备份介质更详细的信息。 语法格式: RESTORE HEADERONLY FROM < backup_device > /*指定还原时要使用的逻辑或物理备份设备。*/ [ WITH { NOUNLOAD | UNLOAD } /*指定是否在还原后从磁带机中自动卸载磁带 [ [ , ] FILE = file_number ] [ [ , ] PASSWORD = { password } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] ] 2. 使用RESTORE语句进行数据库恢复 使用RESTORE语句可以恢复用 BACKUP 命令所做的备份,包括恢复整个数据库、恢复数据库的部分内容、恢复特定的文件或文件组和恢复事务日志。
38
8.3.2 数据库的恢复命令 1) 恢复整个数据库 语法格式:
数据库的恢复命令 1) 恢复整个数据库 语法格式: RESTORE DATABASE { database_name } [ FROM < backup_device > [ ,...n ] ] /*指定备份设备。参见RESTORE HEADONLY语句中backup_device。*/ [ WITH [ RESTRICTED_USER ] /*限制只有db_owner、dbcreator或sysadmin角色的成员才能访问新恢复的数据库。*/ [ [ , ] FILE = { file_number } ] [ [ , ] PASSWORD = { password } ] [ [ , ] MEDIANAME = { media_name } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ] [ ,...n ] [ [ , ] KEEP_REPLICATION ] [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] REPLACE ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ]
39
数据库的恢复命令 该语句的执行情况如图所示。
40
8.3.2 数据库的恢复命令 2) 恢复数据库的部分内容 语法格式:
数据库的恢复命令 2) 恢复数据库的部分内容 语法格式: RESTORE DATABASE { database_name } < file_or_filegroup > [ ,...n ] /*指定包括在需恢复的逻辑文件或文件组的名称*/ [ FROM < backup_device > [ ,...n ] ] [WITH { PARTIAL } /*指定部分还原操作。*/ [ [ , ] FILE = { file_number } ] [ [ , ] PASSWORD = { password } ] [ [ , ] MEDIANAME = { media_name } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ] [ ,...n ] [ [ , ] NORECOVERY ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] REPLACE ] [ [ , ] RESTRICTED_USER ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ]
41
8.3.2 数据库的恢复命令 3) 恢复特定的文件或文件组 语法格式:
数据库的恢复命令 3) 恢复特定的文件或文件组 语法格式: RESTORE DATABASE { database_name } < file_or_filegroup > [ ,...n ] [ FROM < backup_device > [ ,...n ] ] [ WITH [ RESTRICTED_USER ] [ [ , ] FILE = { file_number } ] [ [ , ] PASSWORD = { password } ] [ [ , ] MEDIANAME = { media_name } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ] [ ,...n ] [ [ , ] NORECOVERY ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] REPLACE ] [ [ , ] RESTART ] [ [ , ] STATS [ = percentage ] ] ]
42
8.3.2 数据库的恢复命令 4) 恢复事务日志 语法格式:
数据库的恢复命令 4) 恢复事务日志 语法格式: RESTORE LOG { database_name } [ FROM < backup_device > [ ,...n ] ] [ WITH [ RESTRICTED_USER ] [ [ , ] FILE = { file_number } ] [ [ , ] PASSWORD = { password } ] [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ] [ ,...n ] [ [ , ] MEDIANAME = { media_name } ] [ [ , ] MEDIAPASSWORD = { mediapassword } ] [ [ , ] KEEP_REPLICATION ] [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ] [ [ , ] { NOREWIND | REWIND } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [= percentage ] ] [ [ , ] STOPAT = { date_time } | [ , ] STOPATMARK = 'mark_name' [ AFTER datetime ] | [ , ] STOPBEFOREMARK = 'mark_name' [ AFTER datetime ] ] ]
43
8.3.3 使用企业管理器恢复数据库 启动SQL Server企业管理器,选择菜单项“工具还原数据库…”,如图所示。
44
8.3.3 使用企业管理器恢复数据库 操作结束后,出现如图所示的窗口,该窗口有两个选项卡:“常规”和“选项”。在“常规”选项卡中,选择要恢复的数据库及恢复的类型,单击“确定”按钮。
45
8.4.1 导入导出概念 SQL Server 2000中有多个支持数据导入导出的组件,它们是: (1) 数据转换服务(DTS)
数据转换服务在异类OLE DB和ODBC数据源之间导入和导出数据。 (2) 复制 复制用于创建单独数据库中的数据复本,并通过将一个复本中的修改复制到其它所有复本使所有复本同步,将在第9章讨论复制技术。 (3) 批量复制程序(大容量复制) SQL Server 的大容量复制功能允许高效地传输大量数据。 (4) T-SQL语句 T-SQL语句包括SELECT INTO、INSERT SELECT、BULK INSRT、BACKUP和RESTORE语句。
46
SQL Server 中各种导入和导出选项的功能
8.4.1 导入导出概念 SQL Server 中各种导入和导出选项的功能 功能 DTS向导 复制 bcp BULK INSERT SELECT INTO/INSERT 导入文本数据 是 导出文本数据 从ODBC 数据源导入 导出到ODBC 数据源 从OLE DB数据源导入 导出到OLE DB 数据源 图形用户界面 (GUI) 命令行提示/批处理脚本 Transact-SQL 脚本 自动调度 反复导入/导出 最优性能 数据转换 编程接口
47
8.4.2 使用bcp实用程序导入导出数据 bcp实用程序是一个非常灵活的工具,是一个命令行实用程序,必须在操作系统提示符下执行。
语法格式: bcp { [ [ database_name. ][ owner ] . ] { table_name | view_name } | "query" } { in | out | queryout | format } data_file [ -m max_errors ] [ -f format_file ] [ -e err_file ] [ -F first_row ] [ -L last_row ] [ -b batch_size ] [ -n ] [ -c ] [ -w ] [ -N ] [ -V ( 60 | 65 | 70 ) ] [ -6 ] [ -q ] [ -C code_page ] [ -t field_term ] [ -r row_term ] [ -i input_file ] [ -o output_file ] [ -a packet_size ] [ -S server_name [ \instance_name ] ] [ -U login_id ] [ -P password ] [-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"] 【例8.9】以下是使用bcp实用程序导入数据的命令,它将文本文件e:\sqldata\student.txt中的数据导入数据库XSCJ的XS表中,该文本文件中各字段值用逗号分隔,每行一换行符结束。 bcp "XSCJ..XS" in e:\sqldata\student.txt -c –t "," –m 50 –S ssrv –U "me" –P "mepass"
48
8.5.1 DTS概述 使用DTS导入/导出向导,可以在数据源及数据目标处使用以下的数据类型有20多种,主要包括:
大多数的OLE DB和ODBC数据源以及用户指定的OLE DB数据源(包括Microsoft ODBC Driver for Oracle、Microsoft ODBC Driver for SQL Server、Microsoft OLE DB Provider for OLAP Services、Microsoft OLE DB Provider for Oracle、Microsoft OLE DB Provider for SQL Server等)。 文本文件 Oracle和Informix数据库 Microsoft Excel电子表格 Microsoft Access数据库 Microsoft FoxPro数据库 DBase(包括dbase III、dbase IV) Paradox数据库(包括Paradox 3.x、Paradox 4.x、Paradox 5.x) 其它的ODBC数据源
49
8.5.1 DTS概述 1. 启动DTS导入/导出向导 有三种方法启动DTS导入/导出向导:
第一种方法是在开始菜单中选择:程序Microsoft SQL Server导入和导出数据,如图所示。
50
DTS概述 第二种方法是在SQL Server企业管理器窗口中,选择:工具数据转换服务导入数据(或导出数据),如图所示。
51
8.5.1 DTS概述 第三种方法是在SQL Server企业管理器窗口中选择:工具向导数据转换服务导出向导(或导入向导)。
52
8.5.1 DTS概述 2. 使用DTS导入/导出向导进行数据导出操作
出现如图所示的“高级连接属性”对话框,在其中可以设置数据转换方式,如数据一致性、数据校验、数据格式改变等。
53
DTS概述 在如图所示的对话框中点击“下一步”按钮,将出现的选择目的数据对话框。
54
DTS概述 指定文本文件作为目的数据
55
DTS概述 图 指定复制或查询表 图指定文件格式
56
DTS概述 图保存、调度和复制DTS包 图导入/导出设置摘要显示
57
DTS概述 执行数据导出操作时,将出现如图所示的“正在执行包”提示对话框,导出操作结束后,单击“确定”按钮,则结束操作。
58
8.5.1 DTS概述 3. 使用DTS导入/导出向导进行数据导入操作 第1步 启动DTS导入/导出向导;
第2步 在数据源中选择“用于SQL Server 的Microsoft OLE DB提供程序”,并选择服务器为local,指定数据库名为XSCJ,如图所示;单击“下一步”; 第3步 在如图所示的对话框中单击“下一步”,将出现如图所示的选择目的数据对话框,指定目的数据为“用于SQL Server 的Microsoft OLE DB提供程序”,并指定服务器和数据库名(AVERAGE);
59
8.5.1 DTS概述 第4步 单击“下一步”,在如图所示的对话框中选择“用一条查询指定要传输的数据”;
第5步 单击“下一步”,在如图所示的对话框中输入如下的SQL语句: SELECT 学号,AVG(成绩) AS 平均成绩 FROM XS_KC group by 学号
60
8.5.1 DTS概述 第6步 在如图8.46所示的对话框中选择一个或多个表或视图进行复制,单击“下一步”。
第7步 选择“立即运行”,单击“下一步”。
61
8.5.1 DTS概述 第8步 在如图所示的对话框中单击“完成”。
62
DTS包设计器 Access数据库student的stu表中已有的数据如图所示。
63
8.5.3 DTS包设计器 (1)使用DTS包设计器创建一个DTS包
第1步 在SQL Server企业管理器控制台目录树的“数据转换服务”文件夹上单击鼠标右键,然后单击“新建包”菜单项,如图所示。
64
8.5.3 DTS包设计器 将出现如图所示的包编辑窗口,该窗口包括标题栏、主菜单、快捷工具栏及编辑窗口等四个部分。
第2步 在“连接”快捷工具栏中单击Microsoft Access图标。
65
DTS包设计器 第3步 在所出现的如图所示的连接属性对话框中选择“新建连接”,并选择数据源类型为“Access Connection”,在“文件名”框中指定Access数据库文件名,本例中文件名为G:\access_db\student.mdb。单击“确定”添加该Microsoft Access连接,如图所示。 第4步 在“连接”快捷工具栏中单击Microsoft OLE DB Provider for SQL Server图标。
66
DTS包设计器 第5步 在所出现的如图所示的连接属性对话框中选择“新建连接”,并选择数据源类型为“Microsoft OLE DB Provider for SQL Server”,在“数据库”下拉列表框中指定SQL Server数据库名,本例中数据库名为test。单击“确定”, 添加该Microsoft OLE DB Provider for SQL Server连接,如图所示。
67
DTS包设计器 第6步 在“任务”快捷工具栏中单击“执行SQL任务”图标,将出现如图所示的“执行SQL任务属性”对话框,在“描述”后的文本框中输入“删除原表stucopy”,在“现有连接”下拉列表框中选择“SQL Server Connection”,在SQL语句文本域中输入以下的SQL语句: drop table test..stucopy
68
DTS包设计器 第7步 按与第6步相同的方法建立名为“创建新表stucopy”的执行SQL任务,在SQL语句文本域中输入以下的SQL语句: create table test..stucopy ( sno char(6) NOT NULL , sname char(10) NOT NULL , speciality char(20) )
69
DTS包设计器 这步操作完成后,包编辑器窗口如图所示。
70
DTS包设计器 第8步 单击快捷工具栏的保存图标,出现如图所示的保存DTS包对话框,在将该包保存到SQL Server,在包名称文本框中输入所创建包的名字:从Access数据库复制数据到SQL Server,单击“确定”保存,保存后的DTS包如图所示。
71
DTS包设计器 第9步 在包编辑器窗口的快捷工具栏上单击运行图标,这将对所建立的DTS包进行测试,以确定连接和任务是否正常工作,同时在服务器上创建数据转换时所需的表。该步操作若正常完成,将出现如图8.63所示的对话框,单击该对话框的“确定”按钮。
72
DTS包设计器 第10步 同时选中Microsoft Access和Microsoft OLE DB Provider for SQL Server两个连接,这可通过以下操作方式完成: 第11步 编辑数据转换任务的属性。在“源”选项卡中编辑数据源属性:在描述文本框中输入“从Access拷贝数据到SQL Server”,并选择Access数据库中表的名称stu。
73
DTS包设计器 第12步 编辑转换结果的属性。在“目的”选项卡编辑目的数据的属性,如图所示。
74
DTS包设计器 第13步 编辑转换的属性。在“转换”选项卡中单击“全选”按钮,将选择将源表的所有列都导出到目的表中,如图所示,单击“确定”。 第14步 单击快捷工具栏的运行图标,将执行正在编辑的DTS包。
75
8.5.3 DTS包设计器 上面的实例中,直观地了解到一个DTS包描述了进行数据转换所需完成的工作步骤,包含了3个步骤:
删除原表stucopy; 创建新表stucopy; Access数据库student的stu表拷贝数据到SQL Server的test库的stucopy表。 DTS包有4种保存方式: (1) 保存到SQL Server:这样的包被称为本地包,它们被存储在msdb数据库中,效率最高且可以被其他SQL Server使用。 (2) 保存到Meta Data Service:这样的包可以跟踪包的版本、元数据等信息。 (3) 保存到结构化存储文件:这样包通过网络复制、移动和发送。 (4) 保存到Visual Basic文件:这样的包结合到Visual Basic程序。
76
DTS包设计器 当创建了一个DTS包后,在SQL Server企业管理器中可编辑、运行、调度该包,在企业管理器中展开数据转换服务文件夹,单击“本地包”,在需进行操作的DTS包上单击鼠标右键,将出现入图所示的快捷菜单,选择相应的菜单项即可。
77
习 题 1. 为什么在SQL Server 2000中需设置备份与恢复功能? 2. 设计备份策略的指导思想是什么?主要考虑哪些因素?
习 题 1. 为什么在SQL Server 2000中需设置备份与恢复功能? 2. 设计备份策略的指导思想是什么?主要考虑哪些因素? 3. 数据库恢复要执行哪些操作? 4. T-SQL中用于数据库备份和恢复的命令选项的含义分别是什么? 5. 数据导入导出的含义是什么? 6. DTS的作用是什么?
Similar presentations