2015-06-15 93 views
0

我有一個奇怪的行爲與ODBC驅動程序和底層的COBOL數據庫。數據庫驅動程序是AcuCorp(現爲Microfocus)的acuODBC,數據庫本身是COBOL數據庫。ODBC ISAM_EOF沒有任何理由

DSN是一個系統DSN,工作得很好。通過Access/Excel,您可以成功讀取/寫入DSN數據。

在C#中ODBCConnection.ConnectionState已打開。 Retreiving表頭工作得很好。但是當讀數據時,會出現一個奇怪的錯誤。下面是跟蹤日誌的summerize:

  • [Retreiving列標題]
  • ISAMRestrict - NO_ISAM_ERR
  • ISAMRewind - NO_ISAM_ERR
  • ISAMNextRecord - ISAM_EOF

發生這種情況時,我將WHERE clausel添加到SELECT聲明中。當我沒有添加一個WHERE clausel,只是檢索整個桌子時,需要很長的時間(大約12分鐘爲40000條記錄),但至少我會檢索數據。

所以我現在的問題是,有沒有其他人發生這樣一個奇怪的行爲與ODBC驅動程序?數據應該在哪裏結束文件?

正如一個側面說明,我也聯繫了微焦點,如果他們有解決方案,我會在這裏發佈。

+0

什麼是COBOL數據庫? –

+0

http://de.wikipedia.org/wiki/COBOL @ piet.t,這是一個基於文件的數據庫使用方式,過去就像10年前一樣。 –

+0

我知道COBOL,這是數據庫的一部分,讓我想知道...... –

回答

1

它似乎是Windows UAC依賴。由於我們的應用程序以兼容模式運行,UAC可視化處於活動狀態,並可能導致一些問題原因是COBOL數據庫是一個基於文件的數據庫,而編碼的客戶端直接在ODBC DSN配置中使用這些文件,而不是運行ODBC服務器來處理請求。

所以UAC會導致一些奇怪的行爲。

+0

Micro Focus有一個類似的產品,可能會幫助您稱爲AcuXDBC。它在Vision索引文件之上實現了完全符合SQL規範的關係數據庫引擎,並允許您像訪問「合適」數據庫一樣訪問它們。它符合ODBC和JDBC。 – DuncanKinnear

相關問題