应用ASP ADO访问iFix数据库中的异常错误的分析与解决方法

更新时间:2023-05-18 13:18:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

iFix 文章

2$应用D8ESD<A访问-3-4

数据库中的异常错误的分析与解决方法

应用D8ESD<A访问-3-4数据库中的

异常错误的分析与解决方法

黄东军

(!"##$%&李文炜中南大学信息科学与工程学院

#-./012/

0[-@;9)-?+*@=@)*>;)-?;++=-(W,?*)[*9*;@.(@.L.??,99*(?*.L)[*,(*4V*?)*W*99.9D8E#""\)[9.,J[)[*;(;+=@-@.()*?[(.+.J-*@.L,@-(JD8ESD<A).],*9=-3-4W;);6;@*FC.>6-(-(JY-)[V9;?)-?*^;(WJ-:*@)[*9*;W*9@;(*4;>V+*).*47V+;-()[*9*;@.(@.L)[*,(*4V*?)*W*99.9.??,99*(?*L9.>;@V*?)@.L.V*9;)-.(@=@)*>;(W@.L)Y;9*W*@-J(;)-.(^;(WV,)L.9Y;9W)[*9*+*:;()9*@.+,)-.(>*)[.WF

3456708._D8ESD<A^-3’GW;);6;@*^,(*4V*?)*W*99.9^?;,@*^9*@.+,)-.(

摘要

文章通过对应用D8ESD<A访问-3’G数据库技术的分析,系统地归纳了异常错误D8E#""\产生的原因。以江西德兴铜矿泗洲选矿厂实时监控系统为例,从操作系统方面和软件设计方面逐一分析异常错误产生的原因,并提出解决方法。

异常错误,原因,解决方法关键词:D8ESD<A,-3’G数据库,

!问题的提出

目前大多数企业应用组态软件进行生产数据的采集监控和

为一个整体,开发与维护工作变得简单、快捷。

生产信息的发布。美国’()*++,)-.(公司开发的运行于/012###的-3-4工业组态软件使用较为广泛。-3-4组态软件中有-5*67

8*9:*9软件用作实时或历史数据的发布,-5*68*9:*9能与’3-4

与’’8紧密结合,是运行在5*6服务器上的瘦客户软件,并不需要其他特殊软件、驱动程序或者用户程序的支持。-5*68*9:*9能从’()*9(*)或’()9;(*)上获取-3-4<=(;>-?@实时数据,能够让远程用户实时监控工业生产现场。但是-5*68*9:*9也存在着一些缺点。首先-5*68*9:*9软件存在兼容问题。第二-5*67

而且价格昂贵,每增加一个用户都需要支8*9:*9限制用户数量,

付一笔不小的费用。第三-5*68*9:*9的历史数据发布不够直观明了,而且缺乏数据统计功能。由于-3-4的过程和历史数据库都支持微软通用的A<BC标准,所以在给江西德兴铜矿泗洲选矿厂实时监控系统项目中我们应用D8E访问数据库查询数据然

后以网页的形式进行数据发布,这样既可以方便对查询到的数据进行统计处理,又可以节约一笔经费。但是应用D8E查询数据库数据或者发布数据时会出现一些异常错误,本文拟对此错误进行分析并且提出相应的解决方法。

D<APN-?9.@.L)D?)-:*G<;);A6Q*?)@R是微软提供的

它是D8E的一个组件,通过A<BC驱动5*6数据库访问技术,

当浏览器向程序连接相应的数据库。D8E访问数据库的过程是:

5*6服务器申请访问一个D8E文件时,5*6服务器调用D8E文件,然后解释执行每一条脚本语句,用D<A组件通过A<BC访问数据库,再把执行的结果生成M0NO文件传给客户端。2F%应用D8ESD<A技术访问-3-4数据库的步骤2F%F"建立A<BC数据源

在-3-4组态软件安装后,-3-4会自动在系统<8/中添加两个数据源,分别是“3’G<=(;>-?@M-@).9-?;+<;);”和“3’G

。<=(;>-?@T*;+0->*<;);”

2F%F2创建数据库连接并打开数据库

在程序中使用8*)C.((U8*9:*9FC9*;)*A6Q*?)I“D<A<BF

然后再用C.((FAV*(“<8/U3’GC.((*?)-.(”&建立连接对象,

<=(;>-?@T*;+0->*<;);”或者C.((FAV*(“<8/U3’G

来分别打开-3-4的实时数据库和历<=(;>-?@M-@).9-?;+<;);”

史数据库。

"应用#$%&#’(访问)*)+数据库

2F"-3-4数据库

-3-4数据库是-3-4的核心构架,所用的高层应用都是基于-7

它分为历史数据库和过程数据库。3-4数据库,’3’G数据库的特点

是:支持微软通用的A<BC标准;与-3-4高度集成;以5-(/0系

统服务方式运行;采用数据压缩技术,数据库占用空间非常小等。

经过测试证明,支持-3-4数据库能够基本支持A<BC标准,一般的查找插入和删除,因此就可以在5HB中使用D8E通过

A<BC标准来进行数据库的查询,也可以在别的程序中进行调用,但是-3-4数据库也不完全支持A<BC,例如不支持求总共纪

录数,不支持分页查询,不支持一些通用函数,不支持排序等。

2F%F%对数据库进行查询操作

通过D<A组建中的记录集对象可以进行数据库的查询操作,在程序中使用8*)T8U8*9:*9FC9*;)*A6Q*?)“ID<A<BF

然后再用T8FAV*(“8XO命令”,T*?.9W8*)”R建立纪录集对象,

C.((,;WAV*(3.Y;9WA(+=,;WO.?ZT*;WA(+=,;WCN<0*4)来进行数据库的查询。其中;WAV*(3.Y;9WA(+=是使用向前的游标,因为只是查询数据所以只用向前游标即可,;WO.?ZT*;W7A(+=指定不能修改记录集中的记录,;WCN<0*4)被执行的字符串包含一个命令文本,即8XO命令,如果是调用储存过程来进行查询则应该改成;WCN<8).9*WE9.?参数。

2F2D8E技术

D8EID?)-:*8*9:*9E;J*@K是微软公司’()*9(*)’(L.9>;7)-.(8*9:*9中的一个组件。它实际上是一个服务器端的脚本环境。当脚本运行在服务器端时,5*6服务器完成涉及回送浏览器M0NO页的所有工作,并返回相应的M0NO文本。D8E直接在M0NO文件中嵌入服务器端脚本,使动态交互页面的开发成

图"通过D8ESD<A访问-3’G数据库的方法

最后完成数据库查询操作后,分别通过T8FC+.@*和C.((F释放资源,如图"所示。C+.@*关闭数据库的连接,,异常错误的分析和解决方法

当在’()*9(*)’(L.9>;)-.(8*9:*9I’’8R或’()*9(*)信息服务I’’8R5*6站点中打开D?)-:*8*9:*9E;J*@ID8ER页

iFix 文章

《工业控制计算机》!""#年$%卷第&期

时,该页面中可能会出现’()"**+的错误信息。该错误信息指出’()处理程序在处理该页面时出现错误并指出’()处理程序已对此错误进行了处理。错误信息提示如下:

,--.-/’()0**+/12,34,56,7,--.-895-:469;<=:>,2?@,A

’6-?44?B>,,--.-.55C--,7:2?2,36,-2?>.BD,56E5?22.65.26:2C,-C22:2H

!m

如果系统授权用户对一些自建组件,系统动态链接库WJKKX和注册键的文件没有足够的权限,就可能引起这样的错误。若是注册表的权限设置的问题,那可以用^,H,76&!E,3,检查注册键的权限。尤其是NJMO、d,6、’JN和其他可能引起这个问题的主键。

FG,95-:46

&E*E#\J’O版本导致的错误

\:5-.9.=6J?6?’55,99O.@4.2,269W\J’OX是微软公司

开发的数据存取组件,这个组件本身也存在错误,由此也有可能导致’()Y**+错误,解决该类错误的方法是去微软主页下载最新的\J’O版本,然后安装。

以德兴铜矿泗洲选矿厂实时监控系统为例,当过多用户访问查询历史数据网页时就可能会产生’()"**+的异常错误,由此异常错误导致II(停止响应,用户无法再继续查询历史数据。导致’()产生"**+错误的原因有很多,大致可以分为操作系统错误和程序错误两大方面的原因。

&E*操作系统方面的原因

&E*E*服务端程序的安装顺序导致的错误

在服务端操作人员以错误的顺序安装了新的软件后,一些新版本的JKK反而被旧版本的覆盖,在这些错误中,尤其应该注意的是当安装了任何一个涉及到LM+的数据组件时(JKK,,NOP)’JN的JKK文件并没有被LM+的安装程序中所带的旧版本给覆盖,LM+的安装程序而是将旧版本的JKK安装到Q:27.Q9R9S96,@或者Q:226R9S96,@&!目录中,并且在这些目录中注册了该JKK文件(它们将在服务器的注册表中替换掉新版本JKK在II(中的注册默认目录位置),要解决由于LM+带来的异常错误就是重新注册服务器中原来的JKK文件。

为了避免此类人为操作所造成的异常错误的发生,推荐以下列顺序安装服务端程序:

第一步:安装T:27.Q9UF#E0,

第二步:安装UF#E0N46:.2)?5VWII(#等X,第三步:安装UF#EY()#,第四步:安装(ZK(,-[,-,

第五步:安装\J’O(微软数据存取组件),第六步:安装I]+EY。

&E!程序设计方面的原因

(b.-@)出现错误&E!E*在’()提交表单

’()提交表单到处理页面时下列情况会引起异常错误产生:表单中的控件没有命名,解决该类错误的方法是给表单*)

中所有的控件命名。例如:

<:24C66S4,efF,36fA应该改成<:24C66S4,efF,36f2?@,ef6,36:24C6fA

在表单中必须确保有I24C6或者(,>,56控件,换句话说,!)

表单提交的时候必须传递I24C6或者(,>,56控件值到服务器。

&)当一个’()页面提交一个b.-@给本身时,没有给该

解决此类问题的方法就是给b.-@的b.-@的U?@,属性赋值,

U?@,属性赋值。

在编写JKK文件时没有声明类型本来为[?-:?26的变量#)

为[?-:?26也可能导致’()Y**+异常错误,所以在写程序的时候应该给每个变量进行类型定义。

&E*E!匿名账号没有足够的权限访问查询数据所需的资源

用户通过服务器上的匿名账号(I1(^_O.@4C6,-U?@,)访问网络服务器,而匿名帐号的权限决定了’()中需要访问到的

组件中某些函数的正确性,如果该匿名账号没有足够的权限读取查询数据所需的NJMOJKK文件,就可能会引起Y**+错误,解决该问题的方法是:

(默认为I1(^_O.@4C6,-U?@,)有权限读取下列*X使账号目录:

包含’()文件的目录;

&E!E!在’()文件中非法关闭OJN(,99:.2

如果在’()应用环境中非法关闭了OJN9,99:.2也会产生’()Y**+异常错误,解决此类异常错误的方法有两种:

*)程序员在脚本程序完成OJN操作时必须立即调用(,99:.2对象的K.H.==方法,既设定所有OJN对象的参数值为U.6G:2H。

在g>.B?>E?9?文件中使用(,99:.2_N2]27事件子程序!)

来确保关闭所有的OJN(,99:.2对象。&E!E&’()或’JN程序语法错误

在编写’()程序的时候,程序员通常会使用等号代替

例如:用<‘e^(E=:,>79W*X‘A来代^,94.29,ET-:6,方法,

替<‘^,94.29,ET-:6,^(E=:,>79W*X‘A,但是如果遗漏了等号,写成<‘^(E=:,>79W*X‘A则会导致异常错误。解决此类异常错误的方法是在写’()程序的过程中应用完整的^,94.29,E

规范程序写法,避免由语法错误所造成的异常错误。T-:6,函数,

另外如果调用了一个不存在的存储过程或者存储过程的参数值有下列错误时,也可能导致’()Y**+异常错误的产生:!存储过程参数没有赋值、"不正确参数值、#在存储过程中使用了

‘(S96,@^..6‘R9S96,@&!R目录;

‘(S96,@^..6‘R9S96,@&!R:2,69,-[R目录;网页的主目录(默认为OaRI2,6)CB);

注意:如果已经应用’JN进行查询,那么该账号也必须在

OaR)-.H-?@b:>,9RO.@@.2b:>,9R(S96,@R.>,7B和OaR)-.cH-?@b:>,9RO.@@.2b:>,9R(S96,@R?7.目录中拥有读权限。

使账号有权限对实际的数据库文件和该文件所在的目录!)

进行写操作。

使账号有权限对系统临时目录进行写操作:&)

d,6数据引擎会在操作过程中将临时文件存放在系统临时文件的目录中,所以需要账号有权限对临时目录进行读写的操作,因此需在系统的’C6.,3,5EB?6文件中加入:

(,6F]\)eOaRF,@4(,6F\)eOaRF,@4

(ZK保留字W如:(]OFINUX。!结束语

文章通过分析应用’()h’JN访问:b:3数据库的方法,详细分析了产生’()"**+异常错误的原因。从操作系统方面和

程序设计方面归纳论述了异常错误产生的原因,并且逐一阐述了在特定条件下解决异常错误的方法,对于其他程序员解决类似问题具有借鉴意义。

参考文献

*!

I26,>>C6:.2W中国X:b:3中文!ij版电子文档,!""*

李劲i精通’()数据库程序设计k\li北京:科学出版社,!""*

[收稿日期:!""&imi!#]

&E*E&文件或注册键的权限和授权认证有误

本文来源:https://www.bwwdw.com/article/lhk4.html

Top