如何在 SQL 伺服器中設定到 Oracle 的連結的伺服器並進行故障排除

來源:互聯網
上載者:User
 查看本文應用於的產品

重要說明:本文包含有關如何修改註冊表的資訊。修改註冊表之前,一定要先進行備份,並且一定要知道在發生問題時如何還原註冊表。有關如何備份、還原和修改註冊表的更多資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:

256986  (http://support.microsoft.com/kb/256986/ ) Microsoft Windows 註冊表說明

本頁

  • 概要

    • 設定到 Oracle 的連結的伺服器的步驟

      • 常見錯誤資訊及如何對這些錯誤資訊進行故障排除
      • 參考


        展開全部 | 關閉全部

        概要

        本文分步介紹了如何設定從運行 Microsoft SQL Server 的電腦到 Oracle 資料庫的連結的伺服器,還針對您在設定到 Oracle 的連結服務...

        本文分步介紹了如何設定從運行 Microsoft SQL Server 的電腦到 Oracle 資料庫的連結的伺服器,還針對您在設定到 Oracle 的連結的伺服器時可能遇到的常見錯誤提供了基本的故障排除步驟。

        回到頂端設定到 Oracle 的連結的伺服器的步驟

        回到頂端

        1. 您必須在運行要在其上設定連結的伺服器的 SQL Server 電腦上安裝 Oracle 用戶端軟體。
        2. 在運行 SQL Server 的電腦上安裝所需的驅動程式。Microsoft 僅支援用於 Oracle 的 Microsoft OLE DB 提供者和 Microsoft ODBC 驅動程式。如果您使用第三方提供者或第三方驅動程式串連到 Oracle,則在使用這些提供者或驅動程式遇到任何問題時,您必須與相應的供應商聯絡。
        3. 如果您使用用於 Oracle 的 Microsoft OLE DB 提供者和 Microsoft ODBC 驅動程式,請考慮下列事項:
          • 隨 Microsoft Data 資料訪問組件 (MDAC) 提供的 OLE DB 提供者和 ODBC 驅動程式和都需要 SQL*Net 2.3.x 或更高版本。您必須在用戶端電腦上安裝 Oracle 7.3.x 用戶端軟體或更高版本。用戶端電腦是運行 SQL Server 的電腦。
          • 確保您已經在運行 SQL Server 的電腦上安裝了 MDAC 2.5 或更高版本。如果使用 MDAC 2.1 或更早版本,則無法串連到使用 Oracle 8.x 或更高版本的資料庫。
          • 要使 MDAC 2.5 或更高版本能夠與 Oracle 用戶端軟體一起工作,必須按照下表中的說明修改運行 SQL Server 的用戶端電腦的註冊表。
            Microsoft Windows NT、OracleMicrosoft Windows 95、ClientWindows 98 和 Windows 98 SE       Microsoft Windows 2000 --------------------------------------------------------------------------7.x        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE  \Microsoft\TransactionServer     Microsoft\MSDTC\MTxOCI]\Local Computer\My Computer]     "OracleXaLib"="xa73.dll""OracleXaLib"="xa73.dll"         "OracleSqlLib"="SQLLib18.dll""OracleSqlLib"="SQLLib18.dll"    "OracleOciLib"="ociw32.dll""OracleOciLib"="ociw32.dll"   8.0[HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]\Local Computer\My Computer]     "OracleXaLib"="xa80.dll""OracleXaLib"="xa80.dll"         "OracleSqlLib"="sqllib80.dll" "OracleSqlLib"="sqllib80.dll"    "OracleOciLib"="oci.dll""OracleOciLib"="oci.dll" 8.1[HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]\Local Computer\My Computer]     "OracleXaLib"="oraclient8.dll" "OracleXaLib"="oraclient8.dll"   "OracleSqlLib"="orasql8.dll"  "OracleSqlLib"="orasql8.dll"     "OracleOciLib"="oci.dll""OracleOciLib"="oci.dll"
        4. 安裝 Oracle 用戶端軟體之後,請重新啟動運行 SQL Server 的電腦。
        5. 在運行 SQL Server 的電腦上,使用以下指令碼設定連結的伺服器。
          -- Adding linked server (from SQL Server Books Online):/* sp_addlinkedserver [@server =] 'server'     [, [@srvproduct =] 'product_name']    [, [@provider =] 'provider_name']     [, [@datasrc =] 'data_source']     [, [@location =] 'location'] [, [@provstr =] 'provider_string']     [, [@catalog =] 'catalog']*/ EXEC sp_addlinkedserver   'Ora817Link',  'Oracle',  'MSDAORA',  'oracle817'-- Adding linked server login:/* sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname'    [,[@useself =] 'useself']    [,[@locallogin =] 'locallogin']    [,[@rmtuser =] 'rmtuser']    [,[@rmtpassword =] 'rmtpassword']*/ EXEC sp_addlinkedsrvlogin 'Ora817Link', 'FALSE',NULL, 'scott', 'tiger'-- Help on the linked server:EXEC sp_linkedserversEXEC sp_helpserverselect * from sysservers

        注意:如果使用用於 Oracle 的 Microsoft ODBC 驅動程式,則可以使用 @datasrc 參數指定 DSN 名稱。對於無 DSN 的串連,則通過 @provstr 參數提供提供者字串。如果使用用於 Oracle 的 Microsoft OLE DB 提供者,則請將 TNSNames.Ora 檔案中配置的 Oracle 伺服器別名用於 @datasrc 參數。有關更多資訊,請參見 SQL Server 聯機叢書中的“sp_addlinkedserver”主題。

        回到頂端常見錯誤資訊及如何對這些錯誤資訊進行故障排除

        警告:如果使用登錄編輯程式或其他方法錯誤地修改了註冊表,則可能導致嚴重問題。這些問題可能需要重新安裝作業系統才能解決。Microsoft 不能保證您可以解決這些問題。修改註冊表需要您自擔風險。

        要檢索有關在執行分散式查詢時遇到的錯誤的擴充資訊,可以使用下面兩種方法之一。

        • 方法 1
          在查詢分析器中,運行下面的代碼以開啟追蹤旗標 7300。

          DBCC Traceon(7300)

        • 方法 2
          捕獲在 SQL 事件探查器的“錯誤和警告”事件類別目錄中找到的“OLEDB 錯誤”事件。錯誤資訊的格式如下:Interface::Method failed with hex-error code.

          您可以在 MDAC 軟體開發套件 (SDK) 中附帶的 Oledberr.h 檔案中尋找十六進位錯誤碼。

        下面列出了可能發生的十個常見錯誤資訊以及如何對這些錯誤資訊進行故障排除的方法。

        注意:有關與效能相關的問題,請搜尋 SQL Server 聯機叢書中的“Optimizing Distributed Queries”(最佳化分散式查詢)主題。

        • 訊息 1

          Error 7399:OLE DB provider '%ls' reported an error.%ls

          開啟追蹤旗標 7300,或使用 SQL 事件探查器捕獲“OLEDB 錯誤”事件,以便檢索擴充的 OLEDB 錯誤資訊。

        • 訊息 2a"ORA-12154:TNS:could not resolve service name"

          訊息 2b

          "The Oracle(tm) client and networking components were not found.These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 (or greater) client software installation"

          有關如何解決 Oracle 串連問題的更多資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:

          259959  (http://support.microsoft.com/kb/259959/ ) INFO:對使用 ODBC 驅動程式和 OLE DB 提供者的 Oracle 伺服器調試串連問題的技術
        • 訊息 3Error 7302:Could not create an instance of OLE DB provider 'MSDAORA'

          請確保正確註冊了 MSDAORA.DLL 檔案。(MSDAORA.DLL 檔案是用於 Oracle 檔案的 Microsoft OLE DB 提供者。)使用 RegSvr32.exe 註冊用於 Oracle 的 Microsoft OLE DB 提供者。如果註冊失敗,請重新安裝 Microsoft 資料訪問組件 (MDAC)。有關 MDAC 的更多資訊,請訪問下面的 Microsoft Developer Network (MSDN) 網站:

          http://msdn.microsoft.com/data/Default.aspx (http://msdn.microsoft.com/data/Default.aspx)

          注意:如果您使用第三方程式,而該 Oracle 提供者無法在 SQL Server 進程外運行,請更改提供者選項使它在進程內運行。要更改提供者選項,請使用下列方法之一。

          • 方法 1
            找到下面的登錄機碼。然後,將 AllowInProcess (DWORD) 項的值更改為 1。此登錄機碼位於相應的提供者名稱下:

            HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
          • 方法 2
            在添加新的連結的伺服器時,通過 SQL Server 企業管理器直接設定允許 InProcess 選項。單擊提供者選項,然後單擊以選中允許 InProcess 複選框。
        • 訊息 4Error 7303:Could not initialize data source object of OLE DB provider 'MSDAORA'.[OLE/DB provider returned message:ORA-01017:invalid username/password; logon denied] OLE DB error trace [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80040e4d].

          該錯誤資訊表明連結的伺服器沒有正確的登入映射。您可以執行 sp_helplinkedsrvlogin 預存程序來正確設定登入資訊。此外請驗證您是否已為連結的伺服器配置指定了正確的參數。

        • 訊息 5Error 7306:Could not open table ' %ls' from OLE DB provider 'MSDAORA'.The specified table does not exist.[OLE/DB provider returned message:Table does not exist.][OLE/DB provider returned message:ORA-00942:table or view does not exist] OLE DB error trace [OLE/DB Provider 'MSDAORA' IOpenRowset::OpenRowset returned 0x80040e37:The specified table does not exist.].Error 7312:Invalid use of schema and/or catalog for OLE DB provider '%ls'.A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog and/or schema.Error 7313:Invalid schema or catalog specified for provider '%ls'.Err 7314:OLE DB provider '%ls' does not contain table '%ls'

          如果收到上述錯誤資訊,則表明 Oracle 架構中可能缺少一個表,或者您在該表上可能沒有許可權。請驗證是否使用大寫形式鍵入架構名稱。表和列的字母大小寫情況應與 Oracle 系統資料表中指定的一樣。

          在 Oracle 端,未使用雙引號建立的表或列以大寫形式儲存。如果用雙引號將表或列引起來,則表或列按原樣儲存。

          下面的調用顯示了 Oracle 架構中是否存在表。此調用還顯示了確切的表名。

          sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'

          有關錯誤資訊 7306 的更多資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:

          240340  (http://support.microsoft.com/kb/240340/ ) PRB:對 Oracle 進行 SQL 分散式查詢導致“Could not open table”(未能開啟表)錯誤
        • 訊息 6Error 7413:Could not perform a Windows NT authenticated login because delegation is not available.Msg 18456, Level 14, State 1, Line 1 Login failed for user '\'.

          以下資訊摘自 SQL Server 聯機叢書:

          該錯誤資訊表明,在沒有顯式的登入映射的情況下,您試圖對 Microsoft Windows 驗證登入執行分散式查詢。在不支援安全委派的作業系統環境中,Windows NT 驗證登入需要顯式映射到使用 sp_addlinkedsrvlogin 建立的遠程登入帳戶和密碼。
        • 訊息 7Error 7354:OLE DB provider 'MSDAORA' supplied invalid metadata for column '%ls'.The data type is not supported.

          如果收到此錯誤資訊,您可能會遇到在下面的 Microsoft 知識庫文章中描述的問題:

          243027  (http://support.microsoft.com/kb/243027/ ) FIX:Oracle 中的數字列導致錯誤 7354
        • 訊息 8Error 7356:OLE DB provider 'MSDAORA' supplied inconsistent metadata for a column.Metadata information was changed at execution time.

          如果您的連結的伺服器查詢使用 Oracle 視圖,您可能會遇到下面的 Microsoft 知識庫文章中描述的問題:

          251238  (http://support.microsoft.com/kb/251238/ ) PRB:分散式查詢返回錯誤 7356 及 MSDAORA
        • 訊息 9Error 7391:The operation could not be performed because the OLE DB provider 'MSDAORA' does not support distributed transactions.OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]

          驗證 OCI 版本是否已按上文描述的那樣正確註冊。

          注意:如果登錄機碼全都正確,將會載入 MtxOCI.DLL 檔案。如果 MtxOCI.dll 未載入,則您無法使用用於 Oracle 的 Microsoft OLE DB 提供者或 Microsoft ODBC 驅動程式對 Oracle 執行分散式交易。如果您正在使用第三方提供者並且收到錯誤 7391,請驗證您正在使用的 OLE DB 提供者是否支援分散式交易。如果 OLE DB 提供者確實支援分散式交易,請驗證 Microsoft 分散式交易協調器 (MSDTC) 正在運行。

        • 訊息 10Error 7392:Could not start a transaction for OLE DB provider 'MSDAORA'.OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionLocal::StartTransaction returned 0x8004d013:ISOLEVEL=4096].

          以下資訊摘自 SQL Server 聯機叢書:

          OLE DB 提供者返回錯誤 7392,因為對於此會話只能有一個事務處於活動狀態。該錯誤表明,在串連處於顯式或隱含交易中,且 OLE DB 提供者不支援嵌套事務時,您試圖對 OLE DB 提供者執行資料修改語句。SQL Server 需要這種支援,以便在某些錯誤情況下,它可以終止資料修改語句的影響,同時繼續進行交易處理。

          如果 SET XACT_ABORT 為 ON,則 SQL Server 不需要 OLE DB 提供者中的嵌套事務支援。因此,在顯式或隱含交易中對遠端資料表執行資料修改語句之前,請將 SET XACT_ABORT 設為 ON。這樣做的目的是為了防止您正在使用的 OLE DB 提供者不支援嵌套事務。

        回到頂端

        參考

        有關更多資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章: 244661  (http://support.microsoft.com...

        有關更多資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:

        244661  (http://support.microsoft.com/kb/244661/ ) INFO:Microsoft Oracle ODBC 驅動程式和 OLE DB 提供者的局限性 259959  (http://support.microsoft.com/kb/259959/ ) INFO:對使用 ODBC 驅動程式和 OLE DB 提供者的 Oracle 伺服器調試串連問題的技術 239719  (http://support.microsoft.com/kb/239719/ ) INFO:用於 Oracle w.r.t Oracle 8.x 的 Microsoft ODBC 驅動程式/OLE DB 提供者的支援性 193893  (http://support.microsoft.com/kb/193893/ ) 關於與 Microsoft Transaction Server 和 COM+ 組件一起使用 Oracle 的資訊 191168  (http://support.microsoft.com/kb/191168/ ) INFO:錯誤“-2147168246 (8004d00a)”無法登記調用對象的事務

        有關如何將連結的伺服器與 DB2 一起使用的更多資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:

        218590  (http://support.microsoft.com/kb/218590/ ) INF:為用於 DB2 的 Microsoft OLE DB 提供者配置資料來源 216428  (http://support.microsoft.com/kb/216428/ ) 配置用於 DB2 的 Microsoft ODBC 驅動程式 回到頂端
        相關文章

        聯繫我們

        該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.