asp与sql网页数据库程序设计07Word格式文档下载.docx
《asp与sql网页数据库程序设计07Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《asp与sql网页数据库程序设计07Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
图7-3“设置格式”选项卡
表7-1可用的设置格式选项说明
设置格式选项
说 明
为每个对象产生CREATE<
对象>
命令
产生用来创建选取的数据库对象的Transact-SQL语句
为每个对象产生DROP<
在创建数据库对象的Transact-SQL语句之前,加上删除该数据库对象的SQL指令,也就是要在创建数据库对象之前,先删除现有的数据库对象
为所有相关的对象产生脚本
将所有与选取数据库对象相关的对象,也一并包含到产生的Transact-SQL语句中,这样可以避免用户再指定要创建SQL脚本的数据库对象时,忽略选取相关的对象
在脚本文件中包含描述的表头
在每个Transact-SQL语句之前,加上批注文字
包含延伸预存属性
将延伸存储过程包括在创建的SQL脚本中
只有与Script7.0兼容的功能
产生与Microsoft®
SQLServer™7.0版兼容的脚本。
如果选取这个选项,会忽略以下SQLServer2000选项:
数据行层级排序规则、用户自定义函数、扩充属性、数据表和视图的INSTEADOF触发程序、视图的索引(索引视图)、导出数据行的索引、视图的参考权限及降序索引
3.“选项”选项卡
使用这个选项卡可以对产生的Transact-SQL语句做进一步的微调,例如,指定存放SQL脚本的文件格式、是否要产生表索引的脚本、是否要产生权限的脚本等。
其选项卡画面如图7-4所示,我们可以将它的选项设置区分为:
安全性脚本选项、表脚本选项以及文件选项三个类。
图7-4“选项”选项卡
“安全性脚本选项”是用来指定在产生的SQL脚本中,要包含创建哪些与用户、权限、角色等有关安全性的数据库对象,可选取的选项说明如表7-2所示。
表7-2选项说明表
选项
说明
编写数据库脚本
产生可用来创建现有数据库结构描述脚本的SQL语句
编写数据库用户及数据库角色的脚本
产生可用来创建目前可存取数据库的所有用户与角色的SQL语句
指令化SQLServer登录脚本
产生用来创建目前可存取服务器的所有登录的SQL语句
编写对象级别权限的脚本
产生为每个选取对象创建所有的授权、取消与拒绝权限的SQL语句
“表脚本选项”是用来指定在产生的SQL脚本中,要包含哪些表设置,可用的选项说明如表7-3所示。
表7-3表脚本选项中各选项说明
编写索引脚本
产生Transact-SQL语句,来创建目前存在于任何选定数据表中的索引。
必须在“常规”选项卡中选取一或多个数据表,这个选项才会起作用
编写全文索引脚本
产生Transact-SQL语句,来创建全文索引。
必须在“常规”选项卡中选取一或多个数据表,这个选项才会有作用
编写触发器脚本
产生Transact-SQL语句,来创建目前存在于任何选定表中的触发器。
必须在“常规”选项中选取一或多个数据表,这个选项才会有作用
编写主键、外键、默认值和检查约束脚本
产生Transact-SQL语句,来创建目前存在于任何选定数据表中的主键、外键、默认值与检查约束。
“文件选项”是用来指定产生的SQL脚本输出的方式,在“文件格式”选项上有“MS-DOS文本(OEM)”、“Windows文本(ANSI)”与“国际化文本(Unicode)”三种格式可以选择,这三种格式的差异说明如表7-4所示。
表7-4文件选项中的各选项说明
选 项
说 明
MS-DOS文本(OEM)
将Transact-SQL脚本保存为目前MicrosoftWindows系统字码页(CodePage)格式。
若要将脚本用于批处理操作,并从使用Isql.exe这类的命令提示中执行它,则选取此选项
Windows文本(ANSI)
以ANSI格式保存Transact-SQL脚本。
如果脚本将用于SQLQueryAnalyzer或别的Windows应用程序,应选取这个选项
国际化文本(Unicode)
以Unicode格式保存Transact-SQL脚本。
如果脚本用到只有Unicode字形才支持的特殊国际字符,应选取这个选项。
这个格式所需的磁盘空间是目前Windows字码页或ANSI所需空间的两倍
在“生成的文件”选项上有“创建一个文件”与“每个对象创建一个文件”两种产生文件的方式,选择“创建一个文件”选项会将每个选取对象的SQL脚本都存放到同一个文件中;
选择“每个对象创建一个文件”选项,则会分别为每个选取的对象创建各自的SQL脚本文件。
当我们很确定这些所有选取的对象都要一起创建时,可以选择“创建一个文件”选项。
7-1-2 执行生成SQL脚本
对生成SQL脚本的选项有了初步的了解后,接下来就以“Trade”数据库为例,说明如何利用“生成SQL脚本”功能,将“Trade”数据库内的所有表结构脚本化。
(1)在EnterpriseManager控制台中选取“Trade”数据库,然后在菜单上选择“工具”|“生成SQL脚本”命令,打开“生成SQL脚本”对话框。
(2)在“常规”选项卡中单击“全部显示”按钮,并选中“全部表”复选框,将“Trade”数据库内所有的三个表都加到“将要写入脚本的对象”列表框中。
图7-5选择要编写“全部表”对象的脚本
(3)切换到“设置格式”选项卡,选中“为每个对象产生CREATE<
命令”、“为每个对象生成DROP<
命令”以及“在脚本文件中包含说明性的标题”三个复选框。
图7-6指定要产生的脚本
(4)切换到“选项”选项卡,选中“编写数据库用户和数据库角色的脚本”、“编写索引脚本”以及“编写主键、外键、默认值和检查约束脚本”三个复选框,然后在文件选项上选择以“国际化文本”格式将产生的SQL脚本写到一个文件中。
图7-7指定安全、表与文件选项
(5)设置完成后单击“确定”按钮,这时它会要求指定一个文件名称来存放产生出来的SQL语句,指定完成后,开始编写SQL脚本,完成操作。
7-1-3 执行SQL脚本文件
创建好SQL脚本文件之后,就可以利用它来进行重建数据库结构。
但我们要如何执行这个创建的SQL脚本文件呢?
在SQLServer中,可以利用QueryAnalysis管理工具来执行,执行的步骤如下:
(1)激活QueryAnalysis程序,并登录联机到要使用SQL脚本文件创建数据库的SQL服务器。
图7-8联机登录SQL服务器
(2)在QueryAnalysis窗口中,选择“文件”|“打开”命令,或单击
按钮,选择打开我们刚创建的SQL脚本文件,这时会将SQL脚本文件的内容加载到查询窗口中。
图7-9加载脚本
(3)在数据库下拉列表中,选择要将数据库结构重建在哪一个数据库上,然后单击
按钮,或按F5键,开始执行SQL脚本,进行重建数据库结构的操作。
图7-10执行SQL脚本
完成上述操作后,可以在“New_Trade”数据库中发现,“币别信息”、“产品基本信息”与“产品类别”三个表,这三个表的结构与索引设置等都与“Trade”数据库的相同。
7-2收缩数据库
前面曾经介绍过,可以将数据库文件或事务日志文件设置成可以自动增长,一旦指定的空间不足时,就会自动扩增文件的大小。
随着数据库的使用,一段时间后数据文件可能已经扩增到非常大。
然而我们可能会发现,实际上的数据内容可能并没有那么多,而是占用了许多未使用的磁盘空间,造成磁盘空间的浪费。
在SQLServer中提供了一个收缩数据库功能,可以用来控制数据文件的可用空间比率。
我们可以在要收缩的数据库上右击鼠标,在打开的快捷菜单中选择“所有任务”|“收缩数据库”命令,这时会打开如图7-11所示的对话框。
在“收缩后文件中的最大可用空间”中可以设置执行完文件收缩后要留下多少比率的可用空间。
另外,也可以在这个窗口中选择“根据本调度来收缩数据库”复选框,要求数据库系统自动进行数据库收缩。
图7-11“收缩数据库”对话框
在“调度”选项区内单击“更改”按钮,可以另行指定自动进行数据库收缩的时间,图7-12所示为单击“更改”按钮后打开的编辑调度窗口,它提供了四种调度类型可供选择:
∙“SQLServer代理启动时自动启动”:
表示每当SQLServerAgent服务被启动时,就会自动执行这个收缩数据库操作。
∙“每当CPU闲置时启动”:
每当CPU处于闲置状态时,自动执行这个收缩数据库操作。
∙“一次”:
在指定的日期和时间执行这个收缩数据库的动作。
选择这个调度类型时,必须在后面的“日期”字段与“时间”字段上指定要执行操作的日期时间。
∙“反复出现”:
表示要每隔一段周期时间,例如,每个星期一早上十点,自动执行一次数据库收缩操作。
如果要针对个别的数据文件进行收缩,可以在“收缩数据库”窗口的收缩文件区上单击“文件”按钮,这时它会打开如图7-13所示的ShrinkFile对话框。
在这个对话框中,可以在“数据库文件”下拉列表中指定要进行收缩的数据文件;
在“收缩操作”选项组中指定进行文件的收缩方式;
在“延迟收缩”选项组中设置要立即进行收缩动作,或是指定时间稍后再收缩。
图7-12编辑调度
图7-13设置数据文件压缩
表7-5压缩动作及其说明
压缩动作
收缩页面然后从文件中截断可用空间
收缩数据库分页,然后删除由收缩页面所产生的可用空间
续表
从文件结尾来截断可用空间
从文件结尾删去可用空间
清空文件(将数据合并到文件组的其他文件)
清空选取的数据库文件,目前文件中的数据会移到文件组中的其他文件中
将文件收缩为
将文件收缩成指定的大小
7-3数据库备份与还原
人为操作疏忽、硬件发生故障、数据库文件损坏或者是整个系统毁坏等都有可能造成我们辛苦创建的数据库无法使用。
为了能在发生这类问题时,可以尽快将数据库恢复,将损失降到最低,应该定期备份数据库内容,尤其是存放有重要数据的数据库。
使用前面介绍的“生成SQL脚本”功能只能重建数据库的结构,如果希望将整个数据库的内容都备份,就必须使用数据库备份功能。
7-3-1 备份模式
在SQLServer中有四种备份模式可供选择,下面分别进行介绍。
1.完全数据库备份
这是最完整的数据库备份方式,它会将数据库内所有的对象完整地拷贝到指定的设备上。
由于它是备份完整内容,因此通常会需要花费较多的时间,同时也会占用较多的空间。
对于数据量较少,或者变动较小不需经常备份的数据库而言,可以选择使用这种备份方式。
2.差异数据库备份
差异数据库备份只会针对自从上次完全备份后有变动的部分进行备份处理,这种备份模式必须搭配完全数据库备份一起使用,最初的备份使用完全备份保存完整的数据库内容,之后则使用差异备份只记录有变动的部分。
由于差异数据库备份只备份有变动的部分,因此比起完全数据库备份来说,通常它的备份速度会比较快,占用的空间也会比较少。
对于数据量大且需要经常备份的数据库,使用差异备份可以减少数据库备份的负担。
若是使用完全备份搭配差异备份来备份数据库,则在还原数据库的内容时,必须先加载前一个完全备份的内容,然后再加载差异备份的内容。
例如,假设我们每天都对数据库“Trade”做备份,其中星期一到星期六做的是差异备份,星期天做完全备份,当星期三发现数据库有问题,需要将数据库还原到星期二的状况时,我们必须先将数据库还原到上星期天完全备份,然后再还原星期二的差异备份。
3.事务日志备份
事务日志备份与差异数据库备份非常相似,都是备份部分数据内容,只不过事务日志备份是针对自从上次备份后有变动的部分进行备份处理,而不是针对上次完全备份后的变动。
若是使用完全备份配合事务日志来备份数据库,则在还原数据库内容时,必须先加载前一个完全备份的内容,然后再按顺序还原每一个事务日志备份的内容。
例如,假设我们每天都对数据库“Trade”进行备份,其中星期一到星期六做的是差异备份,星期天做完全备份,当星期三发现数据库有问题,需要将数据库还原到星期二的状况时,我们必须先将数据库还原到上星期天开始的完整数据库备份,然后再还原星期二的差异备份,接着再还原星期三的事务日志备份。
4.文件和文件组备份
这种备份模式是以文件和文件组作为备份的对象,可以针对数据库内特定的文件或特定文件组内的所有成员进行数据备份处理。
不过在使用这种备份模式时,应该要搭配事务日志备份一起使用,因为当我们在数据库中还原部分的文件或文件组时,也必须还原事务日志,使得该文件能够与其他的文件保持数据一致性。
7-3-2 数据库备份
要在EnterpriseManager管理程序中进行数据库备份,可以在菜单中选择“工具”|“备份数据库”命令,打开如图7-14所示的备份数据库对话框。
图7-14数据库备份
在“常规”选项卡中主要是设置备份的数据库、备份的模式以及其他执行、写入备份的方式,可用的选项设置说明如下:
∙“数据库”下拉列表:
用来指定要进行数据备份的数据库名称。
∙“备份”选项组:
指定使用的备份模式,如果数据库是第一次备份,将只会有一个完全备份选项可供选择。
∙“目的”选项组:
指定用来存放备份数据的位置,它可以是指定磁盘驱动器上的文件位置,或者是系统上的磁带设备。
使用时利用“新建”按钮来新建指定的目的位置。
∙“重写”选项组:
指定当指定的备份媒体已经有数据时,写入备份数据的方式,选择“追加至媒体”单选按钮,会将备份数据写到上次备份数据的后面;
选择“重写现有媒体”单选按钮,则会直接覆盖现有的数据。
∙“调度”选项组:
用来设置执行备份的时间,如果希望在特定的时间或是定期在某个时间执行数据库备份,可以使用这个调度选项来指定时间。
2.“选项”选项卡
备份对话框的“选项”选项卡的画面如图7-15所示,它是用来提供一些额外的选项设置,这些选项的作用说明如表7-6所示。
图7-15“选项”选项卡
表7-6“选项”选项卡中的各选项说明
完成后验证备份
在备份完成时验证备份媒体的内容是否完全
备份后弹出磁带
备份完成后自动弹出备份媒体磁带
删除事务日志中不活地动的条目
在备份完成时,删除所有已完成事务的事务日志
检查媒体集名称和备份集到期时间
在重写媒体前,检查媒体集名称以及备份集日期是否过期
备份集到期时间
设置备份集到期日期。
SQLServer只会使用媒体中第一个备份集的备份到期时间信息,来决定是否可重写整个媒体
初始化并标识媒体
将MicrosoftTapeFormat(MTF)前置数据写入媒体的开始位置,它将会删除媒体内的所有内容以及任何前置数据信息,而且在执行时它也不会检查备份集期限与媒体集名称
媒体集名称
将媒体名称写到媒体上作为MTF标题的一部分
媒体集描述
将媒体描述写到媒体上作为MTF标题的一部分
7-3-3 数据库备份设置实例
现在假设我们希望每个星期定期为数据库“Trade”创建完全数据备份,可以按照下列步骤来进行:
(1)在EnterpriseManager管理程序的菜单中选择“工具”|“备份数据库”命令,打开备份窗口,如图7-16所示,然后在“数据库”下拉列表中选取要备份的数据库“Trade”,在“备份”选项组中选择“数据库-完全”单选按钮。
(2)在“目的”选项组中单击“添加”按钮,然后在打开的“选择备份目的”对话框中选择备份位置,如图7-17所示,在这里选择“文件名”,并在下方的文本框中指定备份文件的路径位置。
指定完成后,单击“确定”按钮,切换回备份窗口。
图7-16指定希望备份的数据库图7-17指定备份目的
(3)在备份窗口中选中“调度”复选框,并单击右方的按钮,然后在打开的“编辑调度”对话框中选择“反复出现”单选按钮,并利用右方的“更改”按钮修改调度的周期及时间,如图7-18所示。
图7-18设定调度周期与时间
(4)设置完成后,回到备份窗口,单击“确定”按钮,即完成定期备份数据库“Trade”的设置动作,如图7-19所示。
图7-19完成设置
在上面的范例中,我们利用调度来指定数据库备份的周期时间,当单击“确定”按钮完成设置时,它并不会立即进行数据库备份的动作,而是要等到指定的时间,才会开始运行。
7-3-4 数据库还原
数据库还原是数据库系统管理的另一项非常重要的工作。
就某种意义来说,数据库的还原比数据库的备份更加重要并困难。
因为数据库备份是在正常的状态下进行,然而数据库还原则是在非正常的状态下进行,例如硬件故障、系统瘫痪以及操作疏忽等。
数据库还原的动作就是将数据库的备份重新再载回到系统中。
在执行数据库还原的动作时,系统首先要进行一些安全性检查。
例如:
“检查数据库是否存在”、“数据库文件是否兼容”、“是否处于维修模式中”等检查,以确保数据库可以安全、迅速地还原。
此外,不同的数据库备份类型,都应该个别采取不同的还原方法。
数据库还原就是把数据库备份载回到系统中,在执行还原数据库时,系统首先要进行一些安全性检查,如检查数据库是否存在、数据库文件是否兼容等,以确保数据库能安全、迅速地复原。
另外,不同的数据库备份类型,应该采取不同的还原方法。
在进行数据库还原、日志备份或文件备份时,以下所列的是用户必须要考虑的因素:
∙在进行数据库还原之前,应该取得有关备份的相关信息。
∙如果需要还原最后一次的数据库备份时,则必须要使用RECOVERY选项。
∙如果需要还原附加备份时,则必须使用NORECOVERY选项。
在数据库发生故障之后,数据库管理员应该尽快创建一个事务日志备份,以便取得从上一次备份到数据库故障为止所有的事务信息。
管理员在备份事务日志时,应该使用No_Truncate,这样即使数据库处于无法存取的状态,只要事务日志也可以存取,就可以进行事务日志备份。
在使用RESTORE子句进行回存数据库时,系统会先进行安全性检查。
在下面几种情况下,系统无法还原数据库:
∙服务器上的数据库文件登录信息和备份登录信息之内,数据库文件组不一致。
∙如果在RESTORE语句中指定的数据库已经存在时,同时该数据库与在备份文件中记录的数据库不同。
∙无法提供还原数据库所需的全部文件或文件组。
前面已经提到过,在还原数据库时,如果不能提供还原该数据库的文件或文件登录信息,即无法进行数据库的还原操作。
因此,在进行数据库的还原时,必须要确保数据库的备份文件的有效性;
并且在备份文件过程中,必须要包括所有需要还原的内容。
在还原数据库的方法上,可以使用以下两种方法来查看数据库备份信息:
∙使用SQLServerEnterpriseManager查看备份信息。
∙使用Transact-SQL查看备份信息。
常用的Transact-SQL指令有:
RESTOREHEADERONLY,RESTOREFILELISTONLY,RESTOREBABELONLY和RESTOREVERIFYONLY。
RESTOREHEADONLY语句可以被用来撷取特定备份设备上所有备份集的所有备份前置数据。
执行RESTOREHEADONLY命令,可返回如下信息:
∙备份文件以及备份名称和描述信息。
∙备份所使用的媒体类型。
∙备份方法以及类型。
∙备份的日期以及时间。
∙备份文件的大小以及备份的序号。
您可以使用RESTOREFILELISTONLY语句,来取得备份登录信息内,数据库文件与事务日志文件的文件信息。
因此,执行RESTOREFILELISTONLY指令,可返回以下信息:
∙数据库文件和事务日志文件登录信息的逻辑名称。
∙数据库文件和事务日志文件登录信息的实际名称。
∙文件类型。
∙文件组中所包含的成员。
∙备份登录信息的大小(MB)。
∙文件的最大容量(MB)。
同时,您也可以使用RESTORELABELONLY语句,来取得有关保存备份文件的保存媒体信息。
并且,使用RESTOREVERIFYONLY语句,可以用来判断备份登录信息的单一文件是否完全,以及备份文件是否可读。
在开始执行还原数据库动作之前,还需要注意以下几个方面:
∙在进行数据库还原之前,应该先将故障的数据库删除,以便中断与对所有故障硬件的引用。
关于删除数据库的操作,可以通过SQLServerEnterpriseManager或是使用Transact-SQL指令DROPDATABASE来完成。
∙在进行数据库的还原之前,必须先限制用户对数据库的存取。
数据库的还原是属于静态的,应该使用SQLServerEnterpriseManager或者系统保存程序sp_dbotion,将数据库的“dbouseonly”选项设置为“True”状态。
接着,将直接使用SQLServer的EnterpriseManager来进行数据库的还原操作;
使用SQL