利用MSSQL的鏈接服務器將Oracle鏈接到MSSQL實現同步
我們知道,MSSQL有一個鏈接服務器的功能,該功能在Oracle數據庫中稱之為透明網關,能把不同的異類數據庫附加鏈接到MSSQL中,以實現同步。比如Oracle,DB2,Sybase,access等等,基本上MS能提供驅動程序的都能夠附加成功。本文我們介紹一下Oracle數據庫附加到MSSQL的操作,接下來就讓我們來一起了解一下這部分內容。
具體實現:
首先,在Oracle上創建View,給MSSQL提供必要的數據源。
在MSSQL的服務器上安裝Oracle10g的客戶端。在ODBC創建好數據源。之后在MSSQL上架設鏈接服務器。
測試一下:'SELECT id,title,thedate,summary,lid,city,ptype FROM {0}..{1}.{2}' --0,為數據源名稱;1,為用戶名;2為表名。格式要依照PL/SQL語法。
但是發現,這樣讀取View出錯。所以換了一種寫法:select * from openquery(***,'SELECT id,title,thedate,summary,lid,city,ptype FROM ***.***'),這樣是利用MSSQL的分布式方法去讀取Oracle。
接著,創建采集的存儲過程。
- SET QUOTED_IDENTIFIER ON
- GO
- SET ANSI_NULLS ON
- GO
- CREATE PROCEDURE [dbo].[usp_tranDigital] AS
- select * from openquery(***,'SELECT id,title,thedate,summary,lid,city,ptype FROM ***.***')
用游標獲取結果集的行。這個方法在Oracle比較常用。
- OPEN authors_cursor
- FETCH NEXT FROM authors_cursor into @ID,@TITLE,@THEDATE,@SUMMARY,@LID,@CITY,@PTYPE
- WHILE @@FETCH_STATUS = 0
- BEGIN
- execute Digital_Insert
調用存儲過程插入。
- FETCH NEXT FROM authors_cursor into
- @ID,@TITLE,@THEDATE,@SUMMARY,@LID,@CITY,@PTYPE
- END
- CLOSE authors_cursor
- DEALLOCATE authors_cursor
- GO
- SET QUOTED_IDENTIFIER OFF
- GO
- SET ANSI_NULLS ON
- GO
在Job里調用該存儲過程,就能夠將Oracle數據庫成功地附加到MSSQL數據庫中了,本文就介紹到這里,希望本次的介紹能夠對您有所收獲!
【編輯推薦】