利用MSSQL的鏈接服務器將Oracle鏈接到MSSQL實現(xiàn)同步
我們知道,MSSQL有一個鏈接服務器的功能,該功能在Oracle數(shù)據(jù)庫中稱之為透明網(wǎng)關,能把不同的異類數(shù)據(jù)庫附加鏈接到MSSQL中,以實現(xiàn)同步。比如Oracle,DB2,Sybase,access等等,基本上MS能提供驅動程序的都能夠附加成功。本文我們介紹一下Oracle數(shù)據(jù)庫附加到MSSQL的操作,接下來就讓我們來一起了解一下這部分內容。
具體實現(xiàn):
首先,在Oracle上創(chuàng)建View,給MSSQL提供必要的數(shù)據(jù)源。
在MSSQL的服務器上安裝Oracle10g的客戶端。在ODBC創(chuàng)建好數(shù)據(jù)源。之后在MSSQL上架設鏈接服務器。
測試一下:'SELECT id,title,thedate,summary,lid,city,ptype FROM {0}..{1}.{2}' --0,為數(shù)據(jù)源名稱;1,為用戶名;2為表名。格式要依照PL/SQL語法。
但是發(fā)現(xiàn),這樣讀取View出錯。所以換了一種寫法:select * from openquery(***,'SELECT id,title,thedate,summary,lid,city,ptype FROM ***.***'),這樣是利用MSSQL的分布式方法去讀取Oracle。
接著,創(chuàng)建采集的存儲過程。
- 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數(shù)據(jù)庫成功地附加到MSSQL數(shù)據(jù)庫中了,本文就介紹到這里,希望本次的介紹能夠對您有所收獲!
【編輯推薦】