1. 程式人生 > >在ODI11g中建立Microsoft SQL Server伺服器測試報錯問題

在ODI11g中建立Microsoft SQL Server伺服器測試報錯問題

在ODI11.1.1.5.0中建立了Microsoft Sql Server的伺服器,

JDBC驅動程式名稱選擇了Microsoft SQL Server 2005 Driver for JDBC (com.microsoft.sqlserver.jdbc.SQLServerDriver)

所有引數配置妥當,進行測試時,系統報錯:

oracle.odi.core.exception.OdiRuntimeException: java.lang.IllegalArgumentException: Could not load JDBC driver class [com.microsoft.jdbc.sqlserver.SQLServerDriver]
at oracle.odi.core.datasource.provider.AbstractDataSourceProvider.configure(Unknown Source)
at oracle.odi.core.datasource.support.DefaultDataSourceManager.createAndConfigureDataSourceProvider(Unknown Source)
at oracle.odi.core.datasource.support.DefaultDataSourceManager$1.create(Unknown Source)

檢視資料,發現在ODI11g中有兩處地方是可以放置驅動檔案的:<WINDOWS_USER_HOME>\AppData\Roaming\odi\oracledi\userlib<ODI_HOME>/agent/oracledi/drivers

兩個資料夾的放置意圖是不同的,對於ODI的伺服器端,可將驅動放在<ODI_HOME>\agent\drivers下,當進行資料庫連線時,自動會呼叫伺服器端的驅動,而用於連伺服器的客戶端,由於它們是沒有<ODI_HOME>\oracledi\agent\目錄的,因此在連線時即需要將驅動放在:<WINDOWS_USER_HOME>\

AppData\Roaming\odi\oracledi\userlib,用本地代理進行連線。例如,在對Ms SqlServer的模型進行反向時,如果使用本地代理,也會報找不到驅動的錯,將該驅動新增到userlib目錄下,即可解決問題。比較好奇的是,為何Oracle的資料庫反向卻沒有這樣的報錯,並且該目錄下也沒有對應的驅動。

本例中,ODI伺服器為本機,解決方法如下:

2、解壓下載的驅動,將sqljdbc.jar放到<ODI_HOME>\agent\drivers目錄下

3、在<ODI_HOME>\agent\bin目錄下啟動代理,命令如下:agent.bat "-NAME=ScheduleAgent" "-PORT=20913"

4、測試伺服器連線,選擇ScheduleAgent,連線成功。