Informix OLEDB 提供程序的連接問題
我一直在嘗試建立一個
OLEDB Connection
到一個Informix Dynamic Server
. (版本 IBM Informix 動態伺服器版本 12.10.FC12WE)背景資訊: 我公司將使用的程序需要
OLEDB
並且不支持ODBC
. 目前負責管理實施的同事有很多其他工作堆積,因此實施將被延遲。與此同時,我的任務是弄清楚如何正確配置 Windows 10 客戶端 PC(它將執行程序)以進行連接。我對數據庫的經驗很少,所以我在各種文件和論壇中搜尋了大約 2 週的答案。到目前為止,我的成功參差不齊。已經做了什麼:
- -
coledbp.sql
腳本已針對sysmaster
數據庫上的表執行Informix Client SDK
並Microsoft Data Access Components
已安裝在客戶端 PC 上。- 使用已設置
setnet32
的系統資料庫項。host:port
- 司機
ifxoledbc
已註冊。ODBC
- 數據源(64-Bit
和32-Bit
)已創建並測試(它們工作正常)。各種測試
對於我所有的測試,我一直在使用連接字元串:
“提供者=ifxoledbc;數據源=mydatabase@myserver;使用者ID=myuser;密碼=mypassword;
首先,我嘗試使用
.udl
-File 測試連接。我選擇IBM Informix OLE DB Provider
並輸入數據源和使用者數據。當我測試連接時,出現如下錯誤:“提供程序的初始化失敗。多步 OLE DB 操作生成錯誤。檢查每個 OLE DB 狀態值(如果可用)。沒有完成任何工作。”
據我所知,這個錯誤有很多可能的原因,我不知道是否能以某種方式得到更具體的錯誤資訊。
使用Server 的
Microsoft OLE DB Provider for ODBC Drivers
和ODBC
-datasource ,測試連接有效。在 Microsoft Excel (
32-Bit
) 中,我還嘗試了第一次提到的連接字元串和連接字元串,它是在.udl
設置中輸入資訊時建構的。兩種情況都有相同的錯誤。對於我的下一個測試,我使用了一個
.vbs
- 腳本,該腳本在IBM Informix Developers Handbook
:On Error Resume Next set conn=createobject("ADODB.Connection") conn.connectionstring = "Provider=ifxoledbc;DataSource=mydatabase@myserver;UserID=myuser;Password=mypassword;" conn.open If Err Then WScript.Echo "Error!! Open"+conn.Errors(0).Description Else WScript.Echo "Connected" conn.close end if
這再次導致“多步”錯誤。
我嘗試的最後一件事是使用
Rowset Viewer
ofMDAC
。.udl
我使用了與- File完全相同的輸入。但令我驚訝的是,它成功連接了!(它返回錯誤“未知介面”,但仍然有效)它正確讀取了我使用setnet32
-Tool 設置的條目。(我通過暫時刪除其中一個條目來檢查這一點,這導致了一個額外的錯誤並且沒有連接)現在我有幾個問題:
- 客戶端 PC 上是否還有其他需要配置的內容?
- 查看器如何成功,而其他所有測試都失敗了?
- 有什麼辦法可以得到更準確的錯誤碼?
- 我在處理問題上是否存在重大缺陷?
我感謝任何人可以給我的每一個建議。
因此,在放棄尋找答案之後,我開始嘗試所有可以想像的屬性組合,其中包含設置和未設置的不同系統資料庫,並且我設法讓它工作。
連接字元串失去
UNICODE=TRUE
。我不能肯定地說,如果我之前已經嘗試過,並且錯誤最初來自錯誤設置的系統資料庫項,或者這個簡單的解決方案是否通過了我的測試。
無論如何,這是我所做的,除了我原來的文章中提到的(不知道這是否有什麼不同):
- 使用相應的 regsvr32.exe註冊了 ifxoledbc.dll (
32Bit
和64Bit
) (最初我64-Bit
對兩者都使用了 regsvr32.exe)- 在
Computer\HKEY_CLASSES_ROOT\Ifxoledbc\CLSID
(64 位)和Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Ifxoledbc\CLSID
(32 位)中添加了名稱:OLEDB_SERVICES
類型:REG_DWORD
和值:0xffffffff
結論:
我仍然很驚訝,
RowsetViewer
不知何故繞過了對UNICODE
財產的需求。也許它會自動將其設置為true
?我在查看器中提到的
interface:unknown
錯誤似乎已在較新版本的(僅在使用工具Informix Client SDK
的 64 位作業系統中發生)中得到修復。32Bit
在我成功的測試過程中,我還注意到,Excel 似乎不需要
%INFORMIXDIR%
環境變數。僅供參考,當我測試ODBC
數據源時,我必須編輯“%INFORMIXDIR”以指向我的32Bit
或64Bit
文件夾(不這樣做會導致unable to load shared library
錯誤)。64Bit
數據源也與我的32Bit
Excel 不兼容。OLEDB Provider
但是,它連接得很好%INFORMIXDIR% 仍然指向該64Bit
文件夾。