時光荏苒~~
最近項目有需求需要通過SQL Server2008中的數據自動更新到ORACLE中,其實,一開始肯定會想到觸發器,因為可以保證實時性。
方案一:
首先,我很確定的一件事情就是MSSQL中的存儲過程和觸發器可以調用C#編寫的dll文件,所以最開始的想法就是在SQL Server中創建表的觸發器,然后調用客戶端的同步程序(C#, C++,JAVA編寫的小程序),這樣,可以在客戶端程序完成連接Oracle數據庫和向里面插入的功能,這種方式雖然可以實現;
基本思路如下:MSSQL觸發器==》客戶端同步程序==》Oracle CRUD.
這種思路的類似實現方式在幾年前的一個項目中使用過,運行效果不錯,可以滿足客戶端獲取數據的實時性和高效性。
方案二:
這次主要討論這種方案,畢竟,總是要嘗試新東西(對我來說這種方式目前還沒運用到項目中)
首先我在電腦上安裝了SQL Server2008 R2 以及Oracle11g,以及PL/SQL Developer,然后接下來操作我用截圖進行展示:
第一步:測試oracle的安裝是否正確,用 pl/sql developer進行連接,以及創建一張表,默認插入一條數據
第二步:oracle的數據表准備好后,開始SQL Server 2008 R2端創建LINKED SERVER
可以看到,oracle中的一條數據,在SQL SERVER2008 R2端可以查詢到,接下來,繼續看看insert、update、delete語句的使用語法
完成Insert、update操作后,在PL/SQL developer 中查詢下表中的數據,驗證下是否操作成功(結果顯示是成功的)。
最后,來個刪除操作,仔細看下截圖中兩個不同的刪除語法,是不是可以得到一點啟發...
一個簡單的介紹,結合觸發器獲取可以實現一些很不錯的功能~~~
補充一點:如果是電腦上沒有安裝oracle,利用SQL Server2008建立鏈接的時候會發現找不到oraOLEDB.Oracle這個接口,如果是64位的系統,需要安裝64位的oracle客戶端即可,下載地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html ,因為我使用的是Oracle11g,所以下載的是win64_11gR2_client,當然,你安裝完后,如果你想利用pl/sql developer來建立連接,想必是不行的(plsql developer需要32未的oci.dll),所以可以再復制一個32位的oracle 客戶端來幫助你建立連接....
還有,如果在64位的電腦上直接安裝32位的oracle客戶端,你會發現plsql developer雖然可以正常連接,但是在SQL Server2008的訪問接口中找不到oraOLEDB.Oracle,所以一定要注意版本問題!!!
所以,如果你的64位電腦重來沒裝過oracle的產品,只有Miscrosoft SQL Server2008 ,建議的步驟是:1)安裝64位oracle客戶端(選擇管理員安裝模式);2)有時可能需要重啟電腦。