每次调用ODBC函数时,有两个出错码能返回: 一个数据库自身的错误码和ODBC定义的SQL状态错误码。数据库错误码是数据库定义的,而SQL状态不同ODBC驱动器间通用的一般错误码。例如,由于网络问题数据库不可用时,SQL服务器将返回105错误码。同样的情况,Oracle将返回6034或3140错误码。但在所有情况下,SQL 状态均应为 08S01。提供使用预定义的 SQL 状态,可在连接丢失或切换为备份模式时检测到 SQL 任务。
但是,在多数情况下,ODBC驱动器并不能正确设置SQL状态。为了解决该问题,iFIX提供了一个名为SQLERR.TXT的文本文件。在该文件中你可以列出数据库系统的所有与通讯故障相关的错误码。若ODBC驱动器并不能正确设置SQL状态,则SQL 任务检测SQLERR.TXT文件中匹配的错误码。如果检测到的错误码与其匹配,即认为发生了通讯故障。如果不匹配,该错误按非通讯类错误处理。
注意:当时有任务控制来停止一个SQL查询或关闭iFIX时,可能会产生一个 wsqlodc.exe 应用错误。如果发生这种情况,仍然可以启动该任务并无误地记录SQL数据。
使用如下格式编辑SQLERR文本文件:
2034
6000,6499
3100,3199
237
238
你可以定义单一错误号或错误码范围。在上面例子中,如果Oracle返回错误码为2034, 则任何在6000-6499或3100-3199之间的错误码SQL任务都会解析为通讯故障。
SQLERR.TXT文件安装到应用路径,通常为 C:\Program Files (x86)\GE\iFIX\App。不要更改该文件的名字。