利用 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 了,至於詳細資料,可以透過以下連結查看。
- Microsoft Connector Version 5.0 for Oracle and Teradata by Attunity targeting SQL Server 2017
- Microsoft Connector Version 4.0 for Oracle and Teradata by Attunity targeting SQL Server 2016
- Microsoft Connector Version 3.0 for Oracle and Teradata by Attunity targeting SQL Server 2014
- Microsoft Connector Version 2.0 for Oracle and Teradata by Attunity targeting SQL Server 2012
目前我自己測試的結果,如果我的 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 的版本,而不是連接資料庫的版本,這點要注意一下了。