SSRS無法連線Oracle資料庫

電腦作業系統為64位元, 同時安裝64位元及32位元Oracle Client。
因為是64位元的作業系統,所以想說安裝64位元的SQL SERVER 2008 R2 Express(包含SQL Server Business Intelligence Development Studio)會比較適合。

SQL SERVER 2008 R2 Express 64位元檔案如下,
https://www.microsoft.com/zh-tw/download/details.aspx?id=1842



安裝完後,使用SQL Server Business Intelligence Development Studio連線Oracle資料庫,一直出現下面錯誤訊息,


但實際上使用其他資料庫連線工具測試都是正常的,所以可以確定的是只有SSRS有問題。
上網查了一下,有人說因為同時安裝了64位元和32位元的Oracle Client,而SSRS是使用系統環境變數PATH去找Oracle Driver,所以要刪除32位元的Oracle Path,我把是"client_1_x86"那組路徑刪除,

C:\app\product\11.2.0\client_1_x64\bin;C:\app\product\11.2.0\client_1_x86\bin;

再測試後發現變成下面的錯誤訊息,

這個讓我覺得很怪,看起來像是位元版本弄錯,試了很多設定後才發現,『SQLEXPRADV_x64_CHT.exe』應該是只有64位元的SQL Express資料庫,而SQL Server Business Intelligence Development Studio應該還是32位元。所以把PATH Oracle路徑又改為32位元那組,結果錯誤訊息又回到『ORA-12557』。
最後才看到原來ORACLE_HOME設定為指到64位元的Oracle Client,指到32位元的Oracle Client就可以連線了。


整理一下,
1. 系統環境變數PATH,其實是可以同時存在64位元和32位元兩個路徑的
2. 『SQLEXPRADV_x64_CHT.exe』雖然是64位元,但指的是64位元的SQL Express資料庫,SQL Server Business Intelligence Development Studio還是32位元的,所以Oracle Client是吃32位元的
3. SQL Server Business Intelligence Development Studio是透過系統環境變數『ORACLE_HOME』來取得Oracle Connect Driver



留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 例外控制(Exception Control)

Oracle 工作排程 DBMS_JOB 筆記