ODBC ISAM_EOF 没有任何原因

ODBC ISAM_EOF without any reason

我对 ODBC Driver 和底层 COBOL 数据库有一个奇怪的行为。数据库driver是AcuCorp(现Microfocus)的acuODBC,数据库本身是COBOL数据库。

DSN 是系统 DSN,工作正常。通过 Access/Excel 你可以 read/write 使用 DSN 成功获取数据。

在 C# 中,ODBCConnection.ConnectionState 是打开的。检索 table headers 效果很好。但是在读取数据的时候,出现了一个奇怪的错误。这是跟踪日志的摘要:

当我将 WHERE 子句添加到 SELECT 语句时会发生这种情况。当我不添加 WHERE 子句而只是检索整个 table 时,它需要很长时间(40000 条记录大约需要 12 分钟),但至少我检索了数据。

所以我现在的问题是,有没有其他人用 ODBC driver 发生过这种奇怪的行为?数据应该在哪里的文件结尾?

附带说明一下,我也联系了 Microfocus,如果他们有解决方案,我会 post 在这里。

它似乎 Windows UAC 依赖。由于我们的应用程序 运行 处于兼容模式,UAC 可视化处于活动状态并且可能会导致一些问题。这样做的原因是,COBOL 数据库是一个基于文件的数据库,正在编码的客户端直接在 ODBC DSN 配置中使用这些文件,而不是 运行 宁 ODBC 服务器来处理请求。

所以 UAC 会导致一些奇怪的行为。