做ETL,肯定少不了經(jīng)常會從不同的數(shù)據(jù)庫直接進(jìn)行數(shù)據(jù)的操作,為了更好的進(jìn)行跨庫操作,SQL SERVER 2012擁有LinkedServer功能。
開封網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),開封網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為開封上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的開封做網(wǎng)站的公司定做!1,創(chuàng)建鏈接服務(wù)器之前,一定要確保你的SQL SERVER服務(wù)器上有ORACLE的客戶端程序或者安裝了ORACLE數(shù)據(jù)庫服務(wù)器。
下圖可以看出我的SQL SERVER服務(wù)器上是有ORACLE11G的驅(qū)動程序的。
二,通過圖形界面建立鏈接服務(wù)器需要填寫的信息:
1,鏈接服務(wù)器:ORACLE11G,這個是隨便寫的
2,服務(wù)器類型:選擇ORACLEProvider for OLE DB
3,產(chǎn)品名稱:寫 ORACLE,一般都寫這個
4,數(shù)據(jù)源:ORCL這ORCL不是隨便寫的,一定是tnsnames.ora里的服務(wù)名,還要注意listener的配置。
下面是我tnsnames.ora里的配置信息:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =R9HDET7.vscsh.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
下面是我的listener.ora的配置:
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME =D:oracle11gappproduct11.2.0dbhome_1)
(PROGRAM = extproc)
(ENVS ="EXTPROC_DLLS=ONLY:D:oracle11gappproduct11.2.0dbhome_1binoraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME =orcl)
(ORACLE_HOME =D:oracle11gappproduct11.2.0dbhome_1)
(SID_NAME =orcl)
)
))
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =R9HDET7.vscsh.com)(PORT = 1521))
)
)
三,鏈接服務(wù)器安全性配置1,選擇—〉使用此安全上下文建立鏈接,輸入登錄ORACLE數(shù)據(jù)庫的用戶名和密碼
2,點擊[確定],出現(xiàn)如下的錯誤。
四,解決[無法創(chuàng)建鏈接服務(wù)器“ORACLE11G”的 OLE DB 訪問接口“OraOLEDB.Oracle”的實例。 (.NetSqlClient Data Provider)]的錯誤 這個問題一般是由于注冊表中缺少相關(guān)信息造成的,我們只需要補全這部分信息即可解決。解決方法如下:
1,打開“運行”窗口,輸入“regedit”,回車。
2,HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoftSQLServerMSSQL11.MSSQLSERVERProviders
在Providers下面一般來說是看不到OraOLEDB.Oracle這一項的,于是新建這一項。
在Providers上面右鍵選擇New -> Key,把新增加的項改名為“OraOLEDB.Oracle”
3,為“OraOLEDB.Oracle”這個鍵新增一個DWORD Value,把名字改為“AllowInProcess”
4,為“OraOLEDB.Oracle”這個鍵新增一個DWORDValue,把名字改為“AllowInProcess”
5,把“AllowInProcess”的值改為“00000001”
6,改好后的效果如圖。修改即刻生效,現(xiàn)在就可以再去訪問鏈接服務(wù)器上的Oracle數(shù)據(jù)庫了。
7,但是這個時候我再次做鏈接服務(wù)器的時候,還是出現(xiàn)了上面同樣的錯誤提示如下:
8,百思考不知道原因啊??突然我發(fā)現(xiàn)如下:鏈接服務(wù)器—〉訪問接口—〉OraOLEDB.Oracle—〉允許進(jìn)程內(nèi)沒有勾上,但是我想上面的配置4里已經(jīng)有(為“OraOLEDB.Oracle”這個鍵新增一個DWORD Value,把名字改為“AllowInProcess”),不知道為什么不起作用?????,那好吧,我只好手動的勾上了。
7,手動勾上允許進(jìn)程內(nèi)
8,再次測試是否連通
從上面的這個圖可以看出,已經(jīng)鏈接成功,SQL SERVER2012和ORACLE11G服務(wù)器之間的鏈接服務(wù)器已經(jīng)建立成功。
五,下面我來測試如何在SQL SERVER2012里通過上面建立的鏈接服務(wù)器查詢ORACLE11G里的表數(shù)據(jù)。1,在ORACLE數(shù)據(jù)庫里建立一個測試表
2,我用OPENQUERY來查詢ORACLE數(shù)據(jù)庫里的數(shù)據(jù)如下:
select * from openquery(ORACLE11G,\'SELECT * FROM TESTLINKED_SERVER\')
從上面可以看出,我查詢到了我再ORACLE數(shù)據(jù)庫里剛才建立的表和表數(shù)據(jù)信息。
分享文章:SQLServer2012創(chuàng)建連接服務(wù)器到ORACLE11G
文章出自:http://www.rwnh.cn/article32/cpsppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設(shè)計、品牌網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)