安裝 Informix Client SDK 的注意事項
好一陣子沒有整理部落格,這一陣子因為工作的原因,幾乎沒有摸太多的資料庫,剛好臨時摸到要連接 Informix 的資料庫,想說是個簡單任務,沒有想到還真的被整到了。
如同跟其他廠牌的資料庫一樣,當您想要去連接該資料庫,勢必要安裝到正確的 Informix 的 Driver,因此就要來尋找 Informix 的 SDK 進行安裝。目前 Informix 的 Client SDK 也有區分 32 位元和 64 位元的版本,因為我想要透過 SSIS 去做連接,且希望在 Visual Studio 裡面也能進行測試 ( 目前的 Visual Studio 2019 是 32 位元 ),所以我先安裝 Informix Client SDK 4.1 的 32 位元版本,為了要找這個版本,我花費了不少時間尋找,最後才發現原來這個並不是 Free 可以下載的,必須要購買才能取得,因此只好透過一些管道,聯絡到原廠進行借測,才有辦法往下來進行。
首先安裝上來說,安裝 Driver 基本上沒有甚麼難度,就幾乎都是透過 Wizard 一步一步往下進行,因此沒有太多需要注意的部分
為了方便後續測試,我主要安裝了 OLE DB Provider , ADO.Net Provider 和ODBC 的這三種的連接器。
安裝好之後我先透過 Informix 所提供的 Setnet32 的工具程式來進行設定,確認設定好相關的連接參數之後,首先我先透過 ODBC 來進行測試,因為這裡我是安裝 32 位元的驅動程式,所以要設定 ODBC 的時候,可要注意一下不要選錯,確認是在 32 位元的 ODBC ,這樣才會看到正確的 ODBC 的 Informix 連接。
基本上設定的話算是沒有太大的難度,只要記得要注意編碼的問題,像我這裡是連接比較早期的 Informix 的環境,因此配合安裝時候的設定,改成 zh_TW.big5 的編碼,這個就看您 Server 的編碼,設定為一致就好了。
確定無誤後按下測試連線的按鈕,如果都沒有問題,應該就可以順利的連接上資料庫了。
在前面的步驟中,我們設定採用 ODBC的方式來連接,但如果要採用 OLE DB Provider 來連接的話,在這裡就要特別注意兩點。首先是關於利用 UDL 來進行測試的話,我想很多人會跟我一樣,直接修改檔案副檔名,改變成為 .UDL ,這樣在這個檔案上面雙擊,就可以叫出 UDL 的設定畫面。但您可能就會跟我一樣,看到類似下面的畫面,明明我們有安裝了 Informix 的 OLE DB Provider,怎麼會沒有出現呢 ?
最主要是因為我的環境是在 64 位元的作業系統下 ( Windows Server 2016 ),因此預設會是顯示 64 位元的 OLE DB Provider,但如果您想要呼叫 32 位元的設定畫面,則就要動點手腳了,這裡我是建立一個批次檔案,來叫起 32 位元的 UDL 設定畫面,批次檔案內容如下:
C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\temp\a.udl
用上述的方式,去編輯我所指定的 a.udl 的檔案,此時就可以正確地看到 32 位元模式下的 OLE DB Provider 來進行設定和測試了。
上面這個是第一個需要注意的地方,本來覺得搞定這個部分就沒有問題了,沒有想到當我設定好連線的資訊之後,沒有想到居然出現以下的畫面
從畫面中所提示的訊息,這實在很難去猜到到底是甚麼樣的錯誤,因此網路上也查了一些文章,並且去做了一些測試,後來總算找到了原因,原來是我沒有特別指定編碼所導致的,因此我需要特別在 Extended Properties 裡面,再多加上「UNICODE=true」的設定
就可以順利的連結了
但也因為這個選項,讓我浪費了一個星期的時間反覆測試,總算找到了問題原因。
如同一開始文章所談到的,因為我是需要用 SSIS 來連接,因此當我在 SSIS 裡面去建立 OLE DB 的連線的時候,因為安裝的是 32 位元的 OLE DB Provider,所以設定的時候就可以選擇到 IBM Informix OLE DB Provider 的選項
設定上跟之前介紹 UDL 的測試一樣,記得把 UNICODE=true 的擴充屬性給加入,基本上連線應該就沒有問題了。但此時您比較有可能會遇到的問題會是在 Visual Studio 的測試下是可以執行的,但是佈署到 SQL Server 的時候會因為變成是 64 位元的執行模式,造成無法取得 OLE DB Provider 來進行連線,因為在專案上要指定 Run64BitRuntime 的屬性為 False,這樣才可以正確執行。
或者是如果您還是覺得要用 64 位元的模式下來執行,那麼除了一開始所安裝的 32 位元 Client SDK 之外,就還要多安裝 64 位元的 Client SDK,這樣才可以正常的連接和使用。