SQL Server 2008建立oracle連接服務器(心得)

操做系統是32位的狀況下,曾經沒費太多時間建立好了到oracle的連接服務器。主要要點就是:sql

一、安裝oracle精簡客戶端。當時我用的是版本比較低的「oracle9i310-客戶端簡化版」,安裝好了之後再配置對應目錄(個人是C:\Oracle\ora90\network\ADMIN)下的tnsnames.ora文件。這一步作完,基本上剩餘的工做就是在sql server 2008裏面建立連接服務器了。數據庫

二、新建連接服務器。當時我連的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用戶名和密碼是根據本身的實際狀況來設。windows

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

 

------------------------------------------------偶是分割線-----------------------------------------------------------------------------------------------服務器

    轉眼間,遇到了64位的操做系統和64位的sql server 2008,要連接的仍然是同一個64位11goracle數據庫。本覺得跟之前的差很少,可是訪問接口下拉選項根本就沒有「Microsoft OLE DB Provider for Oracle」,因此32位下的成功經驗徹底用不上了。用百度搜索後決定用odbc方式,因而前後碰到以下問題:oracle

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

    問題二,終於找到了「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',對此一點概念都沒有,能百度出來真是有運氣的成分!畢竟花時間最後仍是解決了,也留了疑問並無徹底瞭解透徹,仍是自我鼓勵一下。

相關文章
相關標籤/搜索