[SQL][SSIS]透過 SSIS 連接 Oracle 的資料庫

利用 Microsoft Connector for Oracle 輕鬆連接 Oracle 資料庫

早期在使用 DTS or SSIS 的時候,要連接 Oracle 的資料庫總是非常麻煩,像是資料庫連接程式會有 32 位元和 64 位元版本差異,或者是不同的版本驅動程式,字串型態欄位長度抓出來不一致,甚至有些時候因為一台電腦安裝多套驅動程式相互影響等問題,雖然都不是甚麼樣大的問題,但每次遇到就搞得很麻煩。

這幾年在寫 .Net 的程式的時候,如果要連接 Oracle ,基本上都可以採用 Managed Driver,就不必搞得那麼辛苦了,但似乎在 SSIS 上面都沒有看到這樣的套件,都還是要安裝驅動程式,或者是購買第三方 SSIS 的套件回來使用。

剛好前一陣子遇到一個要轉 Oracle 資料庫的案子,在 VS 2019 上安裝 SSIS 擴充元件的時候,看到了「Microsoft Connector for Oracle V1.0」,基本上這個是可以直接搭配 SSIS 和 SQL Server 2019 來使用,但如果您是 2012 ~ 2017 之間的版本,則就要另外安裝特定版本的 Microsoft Connector 了,至於詳細資料,可以透過以下連結查看。

 

目前我自己測試的結果,如果我的 SQL Server 2019 的環境上,搭配 VS 2019 安裝 SSIS 擴充元件之後,基本上在資料流程上會有這些資料來源和目的地可以來使用

但如果我加裝了 Microsoft Connector 之後,那麼在資料流程內,會多了 「Oracle 來源」和「Oracle 目的地」( 只是我也搞不懂為什麼他會放錯位置,因為這兩個不應該是通用元件才對 )

因為當你使用這兩個元件的時候,基本上就不需要安裝 Oracle Driver 了,因此有些朋友會想到,那我們要怎麼來設定連線資訊呢 ? 因為用 Oracle 通常都是使用 Net8 Alias Name ,而沒有安裝 Driver 的情況下,要去哪裡設定呢 ? 其實是可以不用那麼麻煩,您可以直接採用 ip:port/sid 的方式來設定連接主機的資訊,以下面我的範例是連接到一台 Oracle 12g Express 上的測試資料庫,不需要先去設定 Alias Name ,這裡直接設定就可以來連接使用了。

基本上使用方式就跟您使用 ADO.Net 來源和目的地元件一樣去使用就可以了,沒有甚麼太大的差異。


而一開始我在使用的時候沒有注意到一些安裝的細節,等真正完成封裝要去測試的時候,就顯示出錯誤訊息了。從訊息中可以看出來,目前我的 SQL Server 2019 RTM 版本太舊了沒有辦法執行。

因此重新到網站上查看一下,SQL Server 2019 要從 CU1 的版本才能,也就是版本號碼要是 15.0.4003.23 以上才可以

因此我下載到目前 2021/1/7 最新的 CU8 來進行安裝使用,安裝好之後我用 SSMS 查看,目前 SSIS 的 Runtime 確定已經是 CU1 以上的版本了

因此我再重新執行一遍,就可以順利的進行轉檔了


而在進行上面的測試的時候,我特別又安裝了一個 SQL Server 2016 的版本,要來確認基本上 Microsoft Connector 只驗證 SSIS 執行的版本,至於來源和目的的 SQL Server 版本,是不受限制的。更白話一點的說,就是前面 Microsoft Connector 針對 SQL Server 的版本,指的是 SSIS Runtime 的版本,而不是連接資料庫的版本,這點要注意一下了。