SQL Server 2008建立oracle連結的伺服器(心得)

來源:互聯網
上載者:User

標籤:

作業系統是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‘,對此一點概念都沒有,能百度出來真是有運氣的成分!畢竟花時間最後還是解決了,也留了疑問並沒有完全瞭解透徹,還是自我鼓勵一下。

SQL Server 2008建立oracle連結的伺服器(心得)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.