SQL Server 2008創建oracle鏈接服務器(心得)


操作系統是32位的情況下,曾經沒費太多時間創建好了到oracle的鏈接服務器。主要要點就是:

1、安裝oracle精簡客戶端。當時我用的是版本比較低的“oracle9i310-客戶端簡化版”,安裝好了以后再配置對應目錄(我的是C:\Oracle\ora90\network\ADMIN)下的tnsnames.ora文件。這一步做完,基本上剩余的工作就是在sql server 2008里面創建鏈接服務器了。

2、新建鏈接服務器。當時我連的oracle數據庫是64位11g,雖然安裝的是“oracle9i310-客戶端簡化版”,最終還是成功創建好了鏈接服務器。“服務器類型”選的是“其他數據源”,訪問接口選“Microsoft OLE DB Provider for Oracle”,"產品名稱“隨便輸了點字符,沒什么影響;”數據源“就是使用tnsnames.ora里面自己設置好的名稱,比如,我在里面設的名稱是"JSB",就照搬過來填在此處。“訪問接口字符串”這個地方是耽誤了我一段時間的,最開始我把這里空着,鏈接服務器當時也是創建成功了的,但是實際執行最簡單的查詢都始終處於執行中,沒見着報錯也沒見到出結果。后來是把連接字符串寫在這里才最終正常返回結果的!這個位置我是這樣設的:data source=JSB;user=jsb123;password=jsb123;Persist Security Info=True。oracle用戶名和密碼是根據自己的實際情況來設。

     這一步驟還沒完,還要把選擇頁切換到“安全性”,選中“使用此安全上下文建立連接(M):",然后輸入oracle用戶名和密碼。最后點【確定】按鈕,至此,到oracle的鏈接服務器創建成功!順便補充一句,訪問接口選“Oracle Provider for OLE DB”,我始終沒有創建成功過,先記錄下來,如有時間再琢磨了。完整截圖如下:

 

------------------------------------------------偶是分割線-----------------------------------------------------------------------------------------------

    轉眼間,遇到了64位的操作系統和64位的sql server 2008,要鏈接的仍然是同一個64位11goracle數據庫。本以為跟以前的差不多,但是訪問接口下拉選項根本就沒有“Microsoft OLE DB Provider for Oracle”,所以32位下的成功經驗完全用不上了。用百度搜索后決定用odbc方式,於是先后碰到如下問題:

    問題一,打開odbc源配置界面,系統DSN找不到oracle的驅動。后來才搞清楚如果是64位的odbc驅動就用”C:\Windows\System32\odbcad32.exe",如果是32的odbc驅動那就到“C:\Windows\SysWOW64\odbcad32.exe”設置。不曉得我說反沒有,按我的印象是這樣子的尷尬

    問題二,終於找到了“oracle9i310-客戶端簡化版”所安裝的odbc驅動,第二個問題隨之而來,創建系統DSN在測試連接始終失敗。從網上查到的信息是說是這種低版本的連接11g數據庫有問題。最終放棄了這個客戶端版本另找他法。其實,32位下工作得很好,最終還是沒落實清楚到底有沒有冤枉它。

    問題三,找合適的64位客戶端和odbc驅動。很奇怪“oracle9i310-客戶端簡化版”做得很好,安裝后想要的東西都有了,現在為了解決問題三下載了多個壓縮包都沒使用成功,這個問題耗費了快兩天的業余時間,比如下載的“ODAC1120320X64copy.zip",有人說好用,我是一點沒用上,放棄。最后起作用的是這兩個壓縮包:”instantclient-basic-windows.x64-11.2.0.3.0.zip“和”instantclient-odbc-windows.x64-11.2.0.3.0.zip“。推薦自己在甲骨文網站注冊帳號后自行下載。好,第三個問題ok。裝完整的oracle客戶端甚至完整安裝oracle數據庫也許就不能糾結這么長時間找軟件了。但是,僅僅是為了在sql server 2008數據庫服務器上創建oracle鏈接服務器就這樣做,必定不能作為很好的方案。這也是花時間找精簡版本的重要原因。

    問題四,驅動有了,接下來添加系統DSN就碰到問題,在TNS Service Name下拉框無選項。這當然跟tnsnames.ora有關,這才發現前一個步驟根本就沒有涉及處理tnsnames.ora。后來是拷貝了“oracle9i310-客戶端簡化版”使用的tnsnames.ora到:”instantclient-basic-windows.x64-11.2.0.3.0“的安裝目錄,環境變量里面增加”TNS_ADMIN“,值設為:”instantclient-basic-windows.x64-11.2.0.3.0“的安裝目錄(我設的是:E:\instantclient_11_2)。下拉選項終於能看到tnsnames.ora里面自己設置好的名稱了!測試連接成功,勝利近在眼前哈哈!相關的截圖如下(Data Source Name由自己來設,我設的是oracle111。建鏈接服務器要用到這個名稱):

    問題五,鏈接服務器始終創建不成功,報錯:鏈接服務器 的 OLE DB 訪問接口 "MSDASQL" 報錯。身份驗證失敗;ORA-12154: TNS: 無法解析指定的連接標識符;Microsoft SQL Server,錯誤: 7399。幾乎又用了一晚上在搜索該問題的解決方法。最后的正確答案是從csdn的舊帖子找到的,原討論帖地址:http://bbs.csdn.net/topics/70308769 。失敗之處就是“訪問接口字符串(V)”沒有設:MSDASQL!設好以后一切ok。完整的截圖如下:

 

    64位環境下的鏈接服務器終於配置好了,能正常的查詢數據。解決總共花費了兩天的業余時間。簡單的總結如下,如果知識面廣恐怕不用頻繁的百度和測試,因此耗費大量時間,例如@provider='MSDASQL',對此一點概念都沒有,能百度出來真是有運氣的成分!畢竟花時間最后還是解決了,也留了疑問並沒有完全了解透徹,還是自我鼓勵一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM