项目4 保障数据库安全 第13章 数据库的安全性 第14章 备份、恢复、分离附加与 导入导出数据库 第13章 数据库的安全性 第14章 备份、恢复、分离附加与 导入导出数据库 SQL Server 2008 数据库管理项目教程
第14章 备份、恢复、分离附加与导入导出数据库 SQL Server 2008 数据库管理项目教程
第14章 备份、恢复、分离附加与导入导出数据库 理论学习(教学)目标: 1. 了解备份的概念和各种备份方法。 2. 理解根据不同实际情况制定相应的备份与恢复策略。 3. 了解数据导入导出的意义。 4. 理解数据库的分离与附加。 技能学习(教学)目标: 1. 熟练掌握备份设备的创建、使用SQLServer对象资源管理器和BACKUP、RESTORE 命令备份、恢复数据库的方法。 2. 掌握利用DTS导入导出向导导入、导出数据的方法。 3. 熟练掌握数据库分离与附加的方法。
14.1 备份概述 备份是指复制数据库(数据文件、日志文件)形成数据库的副本。备份有多种类型。备份设备是指用于存放备份数据的设备。备份必须根据数据的可用性要求,设计适当的备份和还原策略。
14.1.1 备份的概念及类型 1. 备份概念 备份是从数据库中保存数据和日志,以备将来使用。在备份的过程中,数据从数据库复制并保存到另外一个位置。备份操作可以在SQL Server 2008数据库正常运行时进行。
14.1.1 备份的概念及类型 2.备份类型 SQL Server 2008数据库提供了以下多种备份类型: (1)完整备份 (2)事务日志备份 (3)尾日志备份 (4)差异备份 (5)文件及文件组备份 (6)部分备份 (7)仅复制备份
14.1.2 备份设备 1.磁盘备份设备 2.磁带备份设备 3.命名管道备份设备 4. 物理和逻辑设备
14.1.3 备份的策略与规划 备份策略是用户根据数据库运行的业务特点,制定的备份类型的组合。例如对一般的事务性数据库,使用“完整备份”加“差异备份”类型的组合,当然还要选择适当的“恢复模式”。下面提供了几种参考策略,主要包括“完全数据库备份策略”、“数据库和事务日志备份策略”、“差异备份策略”和“文件或文件组备份策略”。
14.1.3 备份的策略与规划 1.完全数据库备份策略 2.数据库和事务日志备份策略 3.差异备份策略 4.文件或文件组备份策略
14.2 备份数据库 进行数据库备份时,首先必须创建用来存储备份的备份设备。备份设备可以是磁盘或磁带。备份设备分为永久备份设备和临时备份设备两类。创建备份设备后才能通过图形向导方式或T-SQL命令将需要备份的数据库备份到备份设备中。
14.2.1创建和管理磁盘备份设备 1.创建永久备份设备 如果要使用备份设备的逻辑名来引用备份设备,就必须在使用它之前创建命名备份设备.打扮、当希望所创建的备份设备能够重新使用或设置系统自动备份数据库时,就要使用永久备份设备。
14.2.1创建和管理磁盘备份设备 (1)使用系统存储过程创建名备份设备。 【例14.1】在本地硬盘上创建一个备份设备。 USE master GO EXEC sp_addumpdevice ‘disk’,’mybackupfile’, ‘E:\data\mybackupfile.bak’
14.2.1创建和管理磁盘备份设备 上例所创建的备份设备的逻辑名是mybackupfile。所创建的备份 设备的物理名是E:\data\mybackupfile.bak 【例14.2】在磁带上创建一个备份设备。 EXEC_addumpdevice’tape’,tapebackupfile\\.\tape0’
14.2.1创建和管理磁盘备份设备 (2)使用对象资源管理器永久备份设备。 在SSMS中创建备份设备,步骤如下: 启动SQL Server Management Studio,在对象资源管理器中 展开“服务器对象”,选择“备份设备”。在“备份设备”的列 表上可以看到上列中使用系统存储过程创建的备份设备,右击鼠 标,在弹出的快捷菜单中选择“新建备份设备”菜单项。 在打开的“备份设备”窗口中分别输入备份设备的名称和完整的 物理路径名,单击“确定”按钮,完成备份设备的创建。
14.2.1创建和管理磁盘备份设备 当所创建的“命名备份设备”不在需要时,可用图形向导方式或 系统存储过程sp_dropdevice删除它。在SQL Server Management Studio中删除“命名备份设备”时,若被删除的 “命名备份设备”是磁盘文件,那么必须在其物理路径下用手工删除 该文件。 用系统存储过程sp_dropdevice删除命名备份文件时,若被删除 的“命名备份设备”的类型为磁盘,那么必须指定DELFFILE选 项,但备份设备的物理文件一定不能直接保存在磁盘的根目录下。例 如, EXEC sp_dropdevice’mybackupfile’,DELFILE
14.2.1创建和管理磁盘备份设备 2. 创建临时备份设备 临时备份设备,顾名思义,就是只做为临时性的存储之用,对这种设备只能用物理名来引用。如果不准备重用备份设备,那么就可以使用临时备份设备。 例如,如果只要进行数据库的一次性备份或测试自动备份设备,那么就用临时备份设备。
14.2.1创建和管理磁盘备份设备 语法格式 BACKUP DATABASE{database_name/@database_name_var} TO<backup_file>[,...n] 其中, 〈backup__file>::= {backup__file__name/@backup__file__name__evar}/ {DISK/TAPE}={temp__file__name/@temp__file__name__evar} 说明:database__name是被备份的数据库名,DISK(磁盘)为介质类型。
14.2.1创建和管理磁盘备份设备 【例14.3】在磁盘上创建一个临时备份设备,它用来备份数据库[实 例数据库]。 USE master GO BACKUP DATABASE实例数据库 TO DISK=‘E:/data/tmpxsxx.bak’
14.2.1创建和管理磁盘备份设备 3. 使用多个备份设备 SQL Server 可以同时向多个备份设备写入数据,即进行并行的备份。并行备份将需备份的数据分别备份在多个设备上,这多个备份设备构成了备份集。图14.1显示了在多各个备份设备上进行备份以及由备份的各组成部分形成备份集。
14.2.1创建和管理磁盘备份设备 图14.1 数据库A 设备1 设备2 设备3 设备4 A1 A2 A3 A4 备份集 介质集 图14.1使用多个备份设备及备份集 数据库A 设备1 设备2 设备3 设备4 A1 A2 A3 A4 备份集 介质集 图14.1
14.2.1创建和管理磁盘备份设备 使用并行备份可以减少备份操作的时间。例如,使用三个磁盘设备进行并行备份,比只使用一个磁盘设备进行设备,在正常情况下可以减少三分之二的时间。 在用多个备份设备进行并行备份时,要注意: 设备备份操作使用的所有设备必须具有相同的介质类型。 多设备备份操作使用的设备其储存量和运行速度可以不同。 可以使用命名备份设备与临时备份设备的组合。 介从多设备备份恢复时,不必使用与备份时相同数量的设备。
14.2.2完全备份数据库 语法格式: BACKUP DATABASE {database_name|@database_name_var} /*被备份的数据库名*/ TO<backup_device>[,…n] /*指出备份目标设备*/ [[MIRROR TO <backup_device>[,…n][…next-mirror]] [WITH [BLICKSIZE={backsize|@blocesize_variable}] /*块大小*/ [[,]{CHECKSUM|NO_CHECKSUM}] [[,]{STOP_ON_ERROR|CONTINUE_AFTER_ERROR}] [[,]DESCRIPTION={‘text’|@text_variable}]
14.2.2完全备份数据库 [[,]DIFFERENTIAL] [[,]EXPIREDATE={date|@date_var} /*备份集到期和允许被重写的日期*/ |RETAINDAYS={days|@days_var}] [[,]PASSWORD={password|@password_variable}] [[,]{FORMAT|NOFORMAT}] [[,]{INIT|NOINIT}] [[,]{NOSKIP|SKIP}] [[,]MEDIADESCRIPTION={‘text’|@text_variable}]
14.2.2完全备份数据库 [[,]MEDIANAME={media_name|@media_name_variable}] [[,]MEDIAPASSWORD={mediapassword|@mediapassword_variable}] [[,]NAME={backup_set_name|@ backup_set_name_var}] [[,]{NOREWINE|REWINE}] [[,]{NOUNLOAD|UNLOAD}] [[,]RESTART] [[,]STATS[=percentage] ]
14.2.2完全备份数据库 说明如下: (1)database_name:将名为database_name的数据库备份到批定的备份设备。 其中,参数database_name指定了一个数据库,表示从该数据库中对事务日志和完整的数据库进行备份。如果要备份的数据库以变量(@database_name_var)提供,则可将该名称指定为字符串常量(@database_nqme_var=database name)或字符串数据类型(ntext和text数据类型除外)的变量。
14.2.2完全备份数据库 说明如下: (2)TO子句表示伴随的备份设备驵是一个非镜像媒体集,或者镜像媒体集中的镜像之一(如果声明一个或多个MIRROR TO 子句)。 (3)<backup_device>:指定备份操作时要使用的逻辑或物理备份设备,最多可指定64个备份设备。<backup_device>可以是下列一种或多种格式。
14.2.2完全备份数据库 格式一: {logical_backup_device_name}|}{@logical_backup_device_name_var} 这是由界面方式或系统存储过程sp_addumpdevice已经创建的备份设备的逻辑名称,数据库将备份到该设备中,其名称必须遵守标识符规则。如果将其作为变(@logical_backup_device_name_var)提供,则可将该备份设备名称指定为字符串常量(@logical_backup_device_name_var=logical backup devce name)或字符串数据类型(ntext和text数据类型除外)变量。
14.2.2完全备份数据库 格式二: {DISK|TAPE}=’physical_backup_device_name’|@physical_backup_device_name_var 这种格式允许在指定的磁盘或磁带设备上创建备份。在执行BACKUP语句之前不必创建指定的物理设备。如果指定的备份设备已存在且BACKUP语句中没有指定INIT选项,则备份将追加到该设备。 当指定TO DISK 或TO TAPE时,必须输入完整的路径和文件名,例如,DISK=’C\PROGRAM Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Backup\1.bak’ 或TQPE=‘\\.\TAPE0’>。 对于备份到磁盘的情况,如果输入一个相对路径名,备份文件将存储到默认的备份目录中.当指定多个文件时,可以混合逻辑文件名(或变量)和物理文件名(或变量);但是,所有的设备都必须为同一类型(磁盘、磁带)。
14.2.2完全备份数据库 (4)MIRROR TO 子句:表示伴随的备份设备组是包含2~4个镜像服务器的镜像媒体集中的一个镜像。若要指定镜像媒体集,请针对每一个镜像服务器设备使用TO子句,后跟最多3个MIRROR TO 子句。备份设备必须在类型和数量上等同于TO子句中指定的设备。在镜像媒体集中,所有的备份设备必须具有相同的属性。
14.2.2完全备份数据库 (5)WITH子句:上面的语句可以使用WITH子句附加一些选项,它们对使用对象资源管理器或备份向导进行备份操作也适用。下面是几个常用选项的说明。 ①BLOCKSIZE选项:用字节数来指定物理块的大小。通常无须使用该选项,因为BACKUP会自动选择适于磁盘或磁带设备的块大小。 ②CHECKSUM或NO_CHECKSUM选项:CHECKSUM表示使用备份校和,NO_CHECKSUM则是显式禁用备份校验和的生成。默认为NO CHECKSUM。 ③STOP_ON_ERROR或CONTINUE_AFTER_ERROR选项:STOP_ON_ERROR表示如果未验证校验和,则BACKUP挫败XOTINUM_AFTER_ERROR表示BACKUP继续执行,而不管是否遇到无效校验和之类的错误。为STOP_ON_ERROR。
14.2.2完全备份数据库 ④EDSCRIPTION选项:指定说明备份集的自由格式文本。 ⑤DIFFERENTIAL选项:指定数据库备份或文件备份应该只包含上次完整备份后更改的数据库或文件部分。这个选项用于差异备份。 ⑥EXPIREDATE或RETAINDAYS选项:EXPIREDATE选项指定备份集到期和允许被重写的日期。如果该日期以变量(@data_var)提供,则可以将该日期指定为字符串常量(@date_var=date)、字符串数据类型变量(ntext和text数据类型除外)、smalldatetime或者datetime变量,并且该日期必须符合已配置的系统datetime格式。RETAINDAYS选项指定必须经过多少天才要以重写该备份媒体集,若使用变(@days_var)来指定,则该变量必须为整形。
14.2.2完全备份数据库 ⑦PASSWORD选项:PASSWORD选项为备份集设置密码,它是一个字符串。如果为备份集定义了密码,则必须提供这个密码才能对该备份集执行恢复操作。 ⑧FORMAT选项:使用FORMAT选项即格式化介质,可以覆盖备份设备上的所有内容,并且将介质集拆分开来。使用FORMAT选项时,系统执行以下操作: 将新的标头信息写入本次备份操作所涉及的所有的备份设备; 覆盖包括介质标头信息和介质上的所有数据在内的内容。
14.2.2完全备份数据库 因此要特别小心使用FORMAT选项。因为只要格式化介质集中的一个备份就会使该介质集不可用,而且系统执行FORMAT选项时不进行介质名检查,所以可能会改变已有设备的介质名,且不发出警告。所以若指定错了备份设备,将破坏该设备上的所有内容。NOFORMAT面积分指定不应该将媒体标头写入用于此备份操作的所有卷,这是默认行为。
14.2.2完全备份数据库 ⑨INIT或NOINIT选项同:在进行数据库备份时,可以覆盖备件设备上的已有数据,也可在已有数据之后进行追加备份。NOINIT选项指定追加备份集到己有备份设备的数据之后。它是备份的默认方式。INIT选项则指定备份为覆盖式的,在此选项下,SQL Server 2008将只保留介质的标头,而从备份设备的开始写入备份集数据。因此将覆盖备份设备上已有的数据。若出现下列情况之一时,蹬盖式备份将不能正常进行:
14.2.2完全备份数据库 对备份设备上的备份集指定了EXPIREDATE(失效期)。而实际尚未到达失效期; 若使用了MEDIANAME选项.而给出的media- name参数值与备份设备的介质名不相符; 试图覆盖己有介质集的一个成员,因为此操作将使介质集其他成员的数据无效。
14.2.2完全备份数据库 ⑩SKIP与NOSKIP选项:若使用SKIP,则禁用备份集的过期和名称检查,这些检查一般由BACKUP语句执行,以防覆盖备份集。若使用NOSKIP,则SQL Server将指示BACKUP语句在可以覆盖媒体上的所有备份集之前先检查它们的过期日期,这是默认值。 ⑾MEDIADESCRIPTION选项:指定媒体集的自由格式文本说明,最多为255个字符。 ⑿MEDIANAME选项:备份时,可用BACKUP语句的MEDIANAME选项指定介质集的名称,或在对象资源管理器中“备份数据库功能”选项中的“媒体集名称”输入框中输入介质集的名称。
14.2.2完全备份数据库 所谓介质集是指用来保存一个或多个备份集的备份没备的集合,它可以是一个备份设备,也可以是多个备份设备。如果多设备介质集中的备份设备是磁盘设备,那么每个备份设备实际上就是一个文件。如果多设备介质集中的备份设备是磁带设备,那么每个备份设备实际上是由一个或多个磁带组成的。
14.2.2完全备份数据库 使用介质集时要注意: 如果指定多个备份设备作为介质集的成员,则必须总是同时使用这些各份设备。 不能只用介质集的一个成员进行备份操作。 如果重新格式化介质集的一个成员,那么介质集中的其他成员包含的数据将无效且介质将不可用。
14.2.2完全备份数据库 当为介质集指定名称时,若备份设各正在进行格式化,则该名称就被写入介质的标头;若备份设备已经格式化,则系统将检查备份设备的名称是否与给定的介质名相符,以保证正确使用备份设备。 BACKUP语句中指定的介质名可达128个字符,而对象资源管理器的Media Name选项指定介质集的名称可达64个字符。 MEDIAPASSWDRD选项用于为媒体集设置密码。
14.2.2完全备份数据库 ⒀NAME选项: NAME选项指定备份集的名称,备份集名最长可达128个字符。若没有指定NAME,它将为空。 ⒁REWINE与NOREWIND选项: 只用于磁带设备,NOREWINE选项指定SQL Server在备份操作完成后使磁带保持打开状态。REWIND选项指定SQL Server将释放磁带和倒带。如果NOREWINE和REWINE均未指定,则默认设置为REWINE。 ⒂UNLOAD与NOUNLOAD选项: 使用UNLOAD选项,将使系统在备份完成后自动从磁带驱动器倒带并卸载磁带,这是SQLServer的默认值。而若不希望系统在备份完成后自动从磁带驱动器倒带并卸载磁带,则要使用NOUNLOAD选项。
14.2.2完全备份数据库 注意:这两个选项其中之一被设定后,其设置值一直保持到用另一个选项改变为止, ⒃STATS选项:STATS选项报告截止报告下一个问隔的闽值时的完成百分比。这是指定百分比的近似值,例如,当STATS=l0时,如果完成进度为40%,则该选项可能显示43%。 每当另一个percentage结束时显示一个消息,它用于测量进度。如果省略percentage,则SQL Server每完成10%就显示一条消息。
14.2.2完全备份数据库 使用对象资源管理器查看备份设备的内容,步骤如下: 在对象资源管理器中展开“服务器对象->备份设备”,选定要杳看的备份设备,右击鼠标,在弹出的快捷菜单中选择“属性”菜单项,在打开的“备份设备”窗口中显示所要查看的“备份设备”的内容。 以下是一些使用EAC Ki1P语句进行完全数据库备份的例子。
14.2.2完全备份数据库 【例14.4】使用逻辑名test 1在E盘中创建一个命名的备份设备,并 将数据库[实例数据库]完全备份到该设备。 USE master GO EXEC sp_addumpdevice ‘disk’,’test1’,’E:\data\test1.bak’ BACKUP DATABASE实例数据库 TO test1 以下示例将数据库[实例数据库]完全备份一备份设备test1,并覆盖设备中原有的内容。 BACKUP DATABASE实例数据库 TO test1 WITH INIT 以下示例将数据库[实例数据库]备份到备份设施备test1上,执行追加的完全数据库备份,该设备上原有的备份内容都被保存。 BACKUP DATABASE 实例数据库 TO test1 WITH NOINIT
14.2.2完全备份数据库 【例14.5】将数据库[实例数据库]备份到多个备份设备. USE master GO EXEC sp_addumpdevice ‘disk’,’test2’,’E:\data\test2.bak’ EXEC sp_addumpdevice’disk’,’test3’,’E:\data\test3.bak’ BACKUP DATABASE [实例数据库] TO test3 WITH NAME=’xsxxbk’
14.2.3 差异备份数据库 对于需频繁修改的数据库,进行差异备份可以缩短备份和恢复时间。只有当已经执行了完全数据库备份后才能执行差异备份。在进行差异备份时,SQI Server 将备份从最近的完全数据库备份后数据库发生了变化的部分。
14.2.3 差异备份数据库 SQL Server 执行差异备份时需注意下列几点: (1)若在上次完全数据库备份后,数据库的某行被修改了,则执行差异备份只保存最后一次改动的值; (2)为了使差异备份设备与完全数据库备份设备区分开来,应使用不同的设备名。 【例14.6】创建临时备份设备并在所创建的临时备份设备上进行差 异备份。 BACKUP DATABASE [实例数据库] TO DISK=’E:\data\xsxxbk.bak’ WITH DIFFERENTIAL
14.2.4 用事务日志备份数据库 备份事务日志用于记录前一次的数据库备份或事务日志备份后数据库所做出的改变。事务日志备份需在一次完全数据库备份后进行,这样才能将事务日志文件与数据库备份一起用于恢复。当进行事务日志备份时,系统进行下列操作: (l)将事务日志中从前一次成功备份结束位置开始,到当前事务日志结尾处的内容进行备份。 (2)标识事务日志中活动部分的开始,所谓事务日志的活动部分指从最近的检查点或最早的打开位置开始至事务日志的结尾处。
14.2.4 用事务日志备份数据库 【例14.7】创建一个命名的备份设备XSXXLOGBK, 并备份[实例 数据库]数据库的事务日志。 USE master GO EXEC sp_addumpdevice’disk’,‘ XSXXLOGBK’,’E:\data\testlog.bak’ BACKUP LOG实例数据库TO XSXXLOGBK
14.2.5 用文件或文件组备份数据库 当数据库非常大时,可以进行数据库文件或文件组的备份。 语法格式: BACKUP DATABASE{database_name|@database_name_var} <file_or_filegroup>[,…f] /*指定文件或文件组名*/ TO<backup_device>[,…next-mirror]] [WITH { [[,]DIFFERENTIAL] /*选项与数据库的完全备份相同*/ }
14.2.5 用文件或文件组备份数据库 使用数据库文件或文件组备份时,要注意以下儿点: (1)必须指定文件或文件组的逻辑名; (2)必须执行事务日志备份,以确保恢复后的文件与数据库其他部分的一致性; (3) 应轮流备份数据库中的文件或文件组,以使数据库中的所有文件或文件组都定期得到备份。
14.2.5 用文件或文件组备份数据库 【例14.8】设TT数据库有2个数据文件t1和t2 ,事务日志存储在文件tlog中。将文件t1备份到备份设备tlbackup中,将事务日志文件备份到tbackuplog中。 EXEC sp_addumpdevice'disk', 'tlbackug', 'E:\data\tlbackup.bak’} EXEC sp_addumpdevice'disk', 'tlbacklog', 'E:\data\tlbackup.bak’} GO BACKUP DATABASE TT FILE=’t1’ TO tlbackup BACKUPLOG TT TO tbackuplog 本例中语句BACKUPLOG的作用是备份事务日志,将在下一部分介绍。
14.3 恢复数据库 14.3.1 恢复数据库的方式 还原方式依赖于数据库备份方式的不同而有所变化。通常,首先还原最近的数据库完全备份,然后还原事务日志备份或增量备份。 1.完全还原方式 2.简单还原方式 3.大容量日志记录还原方式
14.3.2 用对象资源管理器恢复数据库 (1) 打开对象资源管理服务器,展开服务器组,展开服务器。 (2) 右键单击数据库,在弹出的快捷菜单中选【任务】,在其子菜单中选【还原】,在下一级子菜单中选【数据库】命令,弹出如图14.2所示的对话框。 图14.2
14.3.2 用对象资源管理器恢复数据库 (3) 在【还原为数据库】列表框中,选择要恢复的数据库名称。若要用新名称恢复数据库,输入新的数据库名称。 (4) 在还原选项栏中单击【数据库】单选按钮。 (5) 在【要还原的第一个备份】列表中,选择要恢复的备份集。
14.3.2 用对象资源管理器恢复数据库 (6) 在【还原】列表中,单击要恢复的数据库备份。 (7) 也可以单击【选项】选项卡在对话框中执行下列操作: 在【将数据库文件还原为】框中的【还原为】中输入组成数据库备份的各数据库文件的新名称或新位置; 如果没有其他要应用的事务日志或差异数据库备份,单击【使数据库可以继续运行,但无法恢复其他事务日志】; 如果要应用另一个事务日志或差异数据库备份,则单击【使数据库不再运行,但能恢复其他事务日志】。 (8) 单击【确定】按钮,则开始恢复。
14.3.3 用T-SQL语句恢复数据库 在T-SQL中,用RESTORE命令恢复数据库,RESTORE恢复使用 BACKUP 命令所做的备份。 语法格式: RESTORE DATABASE 数据库名 [FROM 备份设备名 | DISK=’物理磁盘文件名’] 【例14.9】用例14.3所做的备份恢复[实例数据库]。 restore database实例数据库 from disk='d:\sql\backup\xsxx_backup.bak'
14.4 分离与附加数据库 分离数据库的操作步骤如下: (1) 打开对象资源管理服务器,展开服务器组,展开服务器。 (2) 展开数据库文件夹,右键单击要分离的数据库,在弹出的快捷菜单中选【所有任务】,在其子菜单中选【分离数据库】命令,如图14.3所示。 (3) 在随后出现的分离数据库对话框中单击【确定】按钮,则完成数据库分离。 图14.3
14.4.2 附加数据库 附加数据库的操作步骤如下: (1) 打开对象资源管理服务器,展开服务器组,展开服务器。 (2) 右键单击数据库,在弹出的快捷菜单中选【附加】命令,如图14.4所示。 (3) 在随后出现的附加数据库对话框中,单击【添加】出现文件选择对话框,选择要附加的数据库的主数据文件名及存放位置,单击【确定】按钮,完成数据库附加,如图14.5所示。
14.4.2 附加数据库 如图14.4附加数据库窗口 图14.4附加数据库窗口 图14.5完成数据库附加的窗口
14.5 数据导入与导出 导入数据也可以是不断进行的任务。例如,创建了用于行政报告的新SQL Server 2008数据库,但是数据驻留在旧式系统中,并且该旧式系统由大量业务应用程序进行更新。在这种情况下,可以每天或每周将旧式系统中的数据复制或更新到SQL. Server 2008实例。 导出数据的发生频率通常较低。SgL Server 2008提供多种工具和功能,使应用程序(如Access或Microsoft Excel)可以直接连续并操作数据,而不必在操作数据前先将所有数据从SQL Server 2008实例复制到该工具中。
14.5.1 导入数据库 1.导入Excel工作表 (1)首先在“对象资源管理”面板中选择并展开服务器,然后右击实例数据库数据库,在弹出的快捷菜单中选择“任务”命令,最后选择“导入数据”命令,如图14.6所示,进入“SQLServer导入和导出向导”窗口。 (2)单击“下一步”按钮后,用户可以在“选择数据源”窗口中选择数据源。这里,计划将Excel表中的数据导入SQL Server 2005中,因此需要在“数据源”下拉列表框中选择"Microsoft Excel"选项,然后单击"Excel文件路径”后的“浏览”按钮,以选择要导入的Excel表的文件名,最后在“Excel版本”下拉列表框中选择"Microsoft Excel 97-2003 "选项,如图14.7所示。
14.5.1 导入数据库 图14.6
14.5.1 导入数据库 图14.7
14.5.1 导入数据库 (3)单击“下一步”按钮,系统弹出如图14.8所示的“选择目标”窗口 ,目的是选择把数据导入哪里。可以在“目标”下拉列表框中选择是将数据导入SQL Server、 Excel表格或Access等其他数据库中。选择数据库所在的服务器,在“数据库”下拉列表框中选择目的数据库的名称,这里取默认服务器名。最后选择数据库,这里默认为[实例数据库],然后单击“下一步”按钮,系统弹出如图14.9所示的“指定表复制或查询”窗口。选中“复制一个或多个‘表或视图的数据”单选按钮。
14.5.1 导入数据库 图14.9 图14.8
14.5.1 导入数据库 4)单击“下一步”按钮,可以在如图14.10所示的“选择源表和源视图”窗口中选择需要复制的表和视图。这里选择班级学生成绩表,也可以通过编辑进行查看和修改。 图14.10
14.5.1 导入数据库 (5)单击“下一步”按钮,弹出如图14.11所示的“保存并执行包”窗口,可以调度包的执行时间,这里选中“立即执行”复选框,也可以选择是否保存SSIS包,以便以后执行相同的任务。 (6)单击“下一步”按钮,在弹出的窗口中单击“完成”按钮,即可完成将Excel表导入数据库的工作。 图14.11
14.5.1 导入数据库 2. 导入文本文件 SQL Server 2008除了可以将数据表和Excel电子表格的数据导入数据库中,还可以将文本文件中的数据导入SQL Server 2008中,下面将一个记录“参加申请评优同学名单.txt"信息的文本文件 图14.12
14.5.1 导入数据库 (1)与刚才导入的步骤一样,现在直接进入“选择数据源”窗口,由于是文本文件,因此这里选择“平面文件源”选项,然后浏览文件所在的路径。在图14.12中还可以选择左边的“常规”、“列”、“高级”和“预览”选项,因此进行修改和查看。其他选项取默认值即可。 (2)单击“下一步”按钮,在“选择目标”窗口中选择将数据导入哪个SQL Server服务器的哪个数据库中,这里选择自己需要的名称作为[实例数据库]数据库的一个表如图14.13所示。
14.5.1 导入数据库 图14.13
14.5.1 导入数据库 (3〕单击“下一步”按钮,在“选择源表和源视图”窗口中选择表或视图,如图14.14。 图14.14
14.5.1 导入数据库 (4)单击“下一步”按钮,如图14.15所示。 (5)单击“下一步”按钮之后,单击“完成”按钮即可完成将文本文件导入SQL Server2008服务器中,最后结果显示如图14.16所示。 图14.16 图14.15
14.5.2 导出数据库 1.导出数据至Access (1)与前面讲过的导入步骤一样,现在选择“导出数据”直接进入如图14.17所示的“选择数据源’,窗口,在该窗口中选择数据源为“Native Client"选项,数据库为“实例数据库" ,然后单击“下一步”按钮。 图14.17
14.5.2 导出数据库 (2)在如图14.18所示的“选择目标”窗口中,在“目标”下拉列表框中选择“MicrosoftAccess"选项,并单击“文件名”旁边的“浏览”按钮,选择刚才在Access中建立的空数据库文件实例数据库.mdb,然后单击“下一步”按钮。 图14.18
14.5.2 导出数据库 (3)在“选择源表和源视图”窗口中选择所要导出的数据表或视图,我们这里全选,如图14.19所示。 图14.19
14.5.2 导出数据库 (4)其他步骤与导入操作基本一致,读者根据向导提示就可完成整个将数据库导出到Access的操作。 (5)最后可以打开实例数据库.mdb文件查看导出的数据,如图14.20所示。 图14.20
14.5.2 导出数据库 2.导出数据至文本文件 导出数据至文本文件的过程与将文本文件的数据导入数据库的过程一样,不同的是导入/导出的源和目的不同。将数据库导出到文本文件,其数据源是SQL. Server数据库,其目标是平面文件源。 现在计划将SQL Server服务器上的[实例数据库]中的数据表[成绩]导出到文本文件中。如果目的文件不存在,则需要先创建一个空的文本文件,为了保持一致,将其取名为成绩.txt。
14.5.2 导出数据库 (1)与前面讲的导出的步骤一样,在导入和导出向导的选择数据源窗口单击“下一步”按钮,在弹出的如图14.21所示的“选择目标”窗口中,选择“目标”下拉列表框中的“平面文件目标”选项,并单击“文件名”旁边的“浏览”按钮,选择刚才建立的空文本文件成绩.txt。然后单击“下一步”按钮。 图14.21
14.5.2 导出数据库 (2)在“配置平面文件目标”窗口中选择所要导出的数据表或视图。 (3)其他步骤与导入操作基本一致读者可以根据向导提示完成整个将数据库导出到文本文件的操作。
14.5.2 导出数据库 (4)最后可以打开成绩.txt文件查看导出的数据,如图14.22所示。 图14.22
14.6 项目举例 1. 项目内容 创建命名备份设备和进行数据库(如库为[物业信息管理数据库])完全数据库备份与恢复。 2. 实现步骤 1)使用对象资源管理器对数据库MyLibrary进行完全数据库备份和恢复。 (1)在对象资源管理器中对数据库进行完全备份。 ① 在对象资源管理器中创建备份设备。 以系统管理员身份连接到SQL Server,打开对象资源管理器,展开“服务器对象”,在“在服务器对象”中选择“备份设备”,右击鼠标,在弹出的快捷菜单中选择“新建备份设备”菜单项(如图14.23所示),打开 “备份窗口”。
14.6 项目举例 在备份窗口的“常规”选项卡中分别输入备份设备的名称和完整的物理路径名,输入完后,单击“确定”按钮,完成备份设备的创建。 图14.23新建备份设备
14.6 项目举例 ② 在对象资源管理器中进行数据库完全备份。 在对象资源管理器中展开“服务器对象”,选择其中的“备份设备”项,右击鼠标,在弹出的快捷菜单上选择“备份数据库”菜单项,打开如图14.24所示的“备份数据库窗口”。 在“备份数据库窗口”中的“选项”页列表中选择“常规”选项卡,在窗口右边的“常规”选项卡中选择“源数据源”为[物业信息管理数据库],在“备份类型”后面的下拉列表中选择“备份类型”为“完整”。 单击“添加”按钮选择要备份的目标备份设备。其他常规属性采用系统默认设置。如需要覆盖备份设备中的原有备份集,则需要在“选项”选项卡中选择“覆盖所有现有备份集”单选按钮。设置完成后,单击“确定”按钮,则系统开始执行备份。
14.6 项目举例 图14.24备份数据库窗口
14.6 项目举例 (2)用T-SQL语句对数据库进行备份。 ① 使用逻辑名CPYGBAK创建一个命名的备份设备,并将数据库[物业信息数据库]完全备份到该设备。在查询分析器中输入如下语句并执行。 USE master GO EXEC sp_addumpdevice ‘disk’,’CPYGBK’,’E:\data\CPYGBK.bak’ BACKUP DATABASE 物业信息数据库 TO CPYGBK
14.6 项目举例 ② 将数据库[物业信息数据库]完全备份到备份设备test,并覆盖该设备上原有的内容。 EXEC sp_addumpdevice ‘disk’,’test’,’E:\data\test.bak’ BACKUP DATABASE 物业信息数据库 TO test WITH INIT ③ 创建一个命名的备份设备WYXXLOGBK,并备份[物业信息数据库]数据库的事务日志。 USE master GO EXEC sp_addumpdevice ‘disk’,’WYXXLOGBK’,’E:\data\WYXXlog.bak’ BACKUP 物业信息数据库 TO WYXXLOGBK
14.6 项目举例 2)使用T-SQL语句,对数据库[物业信息数据库]进行完全数据库恢复。 (1)在对象资源管理器中对数据库进行完全恢复。 数据库恢复的主要步骤如下: 在对象资源管理器中右击“数据库”节点,选择“还原数据库”菜单项,在所出现的窗口中填写要恢复的数据库名称,在“源设备”栏中选择备份设备(如CPYGBAK),此时在设备集框中将显示该设备中包含的备份集,选择要恢复的备份集,单击”确定”按钮即可恢复数据库.如果数据库存在与要恢复的数据库同名的数据库,则需要选择“选项”选项中的“覆盖现有数据库”复选框。
14.6 项目举例 (2)用T-SQL语句对数据库进行恢复。 ① 恢复整个数据库[物业信息数据库]. 在查询分析器输入如下语句并执行: RESTORE DATABASE 物业信息数据库 FROM CPYGBK WITH REPLACE ② 使用事务日志恢复数据库[物业信息数据库]. FROM CPYGHK WITH NORECOVERY,REPLACE GO RESTOR LOG 物业信息数据库 FROM 物业信息数据库 LOGBK
本章结束 谢 谢 大 家!