無法呼叫物件的交易上編列的資訊: 錯誤"-2147168246 (8004d00a)"

文章翻譯 文章翻譯
文章編號: 191168 - 檢視此文章適用的產品。
附註這個錯誤訊息可能會涉及錯誤代碼-2147168246 (8004d00a)。

重要本文包含編輯登錄的相關資訊。在編輯登錄之前,請確定您瞭解如何時能夠復原會發生問題。如需有關如何執行這項操作的資訊,請參閱 「 還原在 Regedit.exe 或 「 還原登錄機碼"說明登錄"[說明] 主題Regedt32.exe 中的主題。
全部展開 | 全部摺疊

在此頁中

結論

做了什麼訊息 「 無法在呼叫物件上 Enlist交易 」 的意思是??

[ODBC 驅動程式管理員會報告此錯誤時交易式伺元件試圖開啟資料庫連接和驅動程式管理員無法登記資料庫在目前交易中的連線。[ODBC 驅動程式管理員會登記藉由呼叫 ODBC 驅動程式的目前交易中的資料庫連接SQLSetConnectionAttr (SQL_ATTR_ENLIST_IN_DTC) 的程序。ODBC 驅動程式如果管理員 」 會顯示"無法以登錄"的訊息呼叫SQLSetConnectionAttr 程序將會失敗。

如需詳細資訊,請按一下下列文件編號,檢視 「 Microsoft 知識庫 」 中:
193893 使用 Oracle 資料庫與 Microsoft 交易伺服器內

其他相關資訊

使用 Microsoft SQL Server 時

如果發生這個錯誤時您的交易式 Microsoft交易的伺服器元件正在存取 Microsoft SQL Server 資料庫,檢查下列項目:
  1. 請確定 Microsoft 分散式交易Coordinator(MS DTC) 服務已啟動。

    請確認 MS DTC服務已啟動的系統上您的伺部署的元件。如果您的伺應用程式存取遠端系統上的 Microsoft SQL Server 資料庫,請確認MS DTC 服務也啟動該系統。這經常是造成「 無法登記錯誤 」。

    執行下列步驟,檢查 MS DTC 服務的狀態:
    1. 在上 啟動 功能表中,選取設定],然後按一下 [控制台]。
    2. 選取 [服務] 圖示。
    3. [服務] 清單中捲動,並確認已選取MS DTC 服務的狀態便會啟動。若 MS DTC 狀態 (不是空白啟動),您可以啟動選取 MSDTC,然後按一下 啟動.
  2. 請檢查您的網路設定。

    當在同一個系統存取的交易式伺元件SQL Server 資料庫,在另一個系統,MS DTC 會傳播 DTC 交易從第二個系統的第一筆或主要系統。交易如果可以在主要的系統上 DTC 處理程序,只會發生傳播與第二個系統上 DTC 處理程序進行通訊。DTC 處理程序建立遠端程序呼叫 (RPC) 連線,兩個方向,其中表示在其中一個系統上的網路組態發生問題可以防止 DTC無法成功地與彼此通訊的處理程序。這會導致 ODBC 移植至會傳回"無法以登錄"的錯誤。

    通常下列 MS DTC 事件會記錄在 Windows NT 應用程式事件日誌中:
    主要任務: 工作階段繫結失敗。主要逾時等候如果要繫結的次要資料庫。
    這個錯誤指出,在 Microsoft 交易伺服器上的 DTC電腦處於可以繫結至 DTC,在 SQL Server 中,但是在 SQL Server 上的 DTC無法執行伺反向繫結電腦。

    如果您的網路組態不正確的每一個嘗試若要連接至遠端 SQL Server 資料庫會產生 「 無法登記 」發生錯誤。如果您持續收到 「 無法登記 」 的錯誤即使 Microsoft在這兩個系統上 DTC 已啟動、 失敗的最可能的原因是網路組態錯誤。

    如果發生這種情形,請檢查您的網路設定使用 Pingtest.bat,如下所示:
    1. 使用文字編輯器 (例如 「 記事本 」) 建立的檔案名為 Pingtest.bat。將下列批次檔命令複製進去。
         echo off
         REM Usage pingtest OtherMachineName
         REM Must use a machine name and NOT an IP address
         ping -n 1 %computername%
         ping -n 1 %1
         ipconfig /all
         echo on
      批次檔會使用電腦名稱 %,若要顯示的本機 IP 位址。它接著會顯示在命令中指定的遠端電腦的 IP 位址當您執行的批次檔的行。當您叫用的批次檔時,您必須指定遠端電腦,並不是其 IP 位址的名稱。使用電腦名稱會強制 ping,如果要解決 MS 完全相同的電腦名稱它會繫結到遠端 MS DTC 電腦時,就會執行 DTC。
    2. Microsoft 交易伺服器上執行 Pingtest.bat如果要判斷如果您可以依照名稱 ping SQL Server 電腦的電腦。擷取從文字檔中的批次檔的輸出。比方說,如果 Microsoft電腦 A 上執行交易伺服器內,以及 SQL Server 上執行電腦 B,請使用下列命令:
      Pingtest B > AResults.txt
    3. 若要在 SQL Server 電腦上執行 Pingtest.bat決定是否您可以依照名稱 ping 伺電腦。擷取在文字檔中的批次檔的輸出。比方說,如果伺電腦 A 上執行,而且 SQL Server 正在執行在電腦 B 上,請使用下列命令:
      Pingtest A > BResults.txt
    4. 檢查以確保將兩個文字檔的內容在兩台電腦可以成功 ping 另一個。

      如果您使用主機或 Lmhosts 檔案 TCP/IP 的名稱解析,檢查這些檔案非常請小心,以確定它們包含有效的電腦名稱,以 IP 位址對應。若要執行這項操作,請檢查主機和 Lmhosts 檔中的在這兩個的伺 Winnt40\System32\Drivers\Etc 目錄電腦和 SQL Server 的電腦。通常,一個系統上的檔案將會雖然這在另一個系統上已不正確,則會正確。
  3. 設定 SQL Server,以使用 TCP/IP,而不是已命名管道。

    如果您只看到 「 無法登記"錯誤間歇性地然後使用 [具名管道,而不是 TCP/IP,可能會造成問題的原因。使用 「 具名管道,可能會導致間歇性"無法以登錄"的錯誤。
    Microsoft 強烈建議您設定 SQL Server 使用 TCP/IP而不是具名管道。使用 「 具名管道可能會導致 Intermittent 「 失敗以 Enlist"錯誤。
    1. 在上 啟動 功能表中,選取的程式中,選取 [Microsoft SQL Server 6.5,然後再按一下 SQL 用戶端組態公用程式.
    2. 按一下 網路程式庫 索引標籤。
    3. 在 [預設的網路] 清單中,選取 [TCP/IP]通訊端。
    4. 按一下 完成.
  4. 請檢查在交易逾時。

    元件的交易可能已停止,因為交易逾時前資料庫完成登記。您可以增加到交易逾時值Microsoft 交易伺服器總管] 中。使用下列步驟來增加逾時值:

    1. 啟動 Microsoft 交易伺服器總管] 及選取 [電腦]。
    2. 以滑鼠右鍵按一下交易所在的電腦初始,然後按一下 屬性.
    3. 按一下 選項 索引標籤上,並指定較長的逾時值。
    這種做法是問題的原因,除非您的交易花了異常長的時間。然而,可能會暫時增加很有幫助逾時值,以消除這為潛在的問題來源。

使用 Oracle 時

如果發生這個錯誤時您的交易式 Microsoft交易的伺服器元件正在存取 Oracle 資料庫中,核取遵循:
  1. 請確定已啟動 MS DTC 服務。

    請確定 Microsoft DTC 服務 「 啟動 」 的系統上部署您的伺元件。
    使用下列步驟,以檢查申請狀態:
    1. 在上 啟動 功能表中,選取設定],然後按一下 [控制台]。
    2. 選取 [服務] 圖示。
    3. [服務] 清單中捲動,並確認已選取MS DTC 服務的狀態便會啟動。若 MS DTC 狀態 (不是空白啟動),您可以啟動選取 MSDTC,然後按一下 啟動.
  2. 在 Microsoft 安裝最新的 Oracle 用戶端軟體交易的伺服器電腦。

    請確定最新的 Oracle 7.3 或包含的系統上安裝 oracle 8 用戶端軟體更新程式發行伺元件。請注意它是通用於升級在系統中包含 Oracle 資料庫,但卻失敗,Oracle 軟體升級系統,其中包含 Microsoft Oracle 軟體交易的伺服器元件。您必須在升級 Oracle 軟體用戶端系統。

    您可以取得最新的 Oracle 修補 Windows NT從 Oracle FTP 站台。跳至:
    ftp://oracle-ftp.oracle.com 然後選取 「 伺服器 」、 「 wgt 技術 」、 「 伺服器 」 和"windowsNT"
  3. 在 Oracle 資料庫上安裝最新的 Oracle 伺服器軟體伺服器系統。

    如果伺應用程式存取 Oracle 資料庫在 Windows NT 或 UNIX 系統上,請確定在該系統上已經安裝最新的 Oracle 補充程式。

    您也可以取得Windows NT Oracle FTP 站台從 Oracle 補充程式最新。跳至:
    ftp://oracle-ftp.oracle.com 然後選取 「 伺服器 」、 「 wgt 技術 」、 「 伺服器 」 和"windowsNT"
  4. 使用 Microsoft Oracle ODBC 驅動程式。

    請某些伺正在使用 Microsoft 的 Oracle ODBC驅動程式。沒有其他的 Oracle ODBC 驅動程式支援伺交易。

    您必須安裝下列的 Microsoft Oracle 其中一項如果您想要使用從伺交易的 ODBC 驅動程式以 Intel x86 平台。

    摺疊此表格展開此表格
    MS Oracle ODBC 驅動程式版本數字發行載具
    2.0 更新2.73.7283.03MDAC 1.5b
    MDAC 1.5 c
    Windows NT 4.0 選項套件
    2.0 更新2.73.73563.5 ODBC SDK
    2.52.573.2927Visual Studio 6.0
    資料存取 SDK 2.0
    MDAC 2.0

    您必須安裝 Microsoft Oracle ODBC 2.5 驅動程式版本 2.573.2927,如果您想要使用伺從 Compaq Alpha 平台的交易。較早版本的 MicrosoftOracle ODBC 驅動程式不支援 Compaq Alpha 平台。

    您可以取得從 Microsoft Oracle ODBC 驅動程式 2.5:

    Microsoft 通用資料存取 (MDAC) Web 網頁 藉由下列 「 下載 」 連結。

    如果您想要存取 Oracle資料庫中,我們建議您使用 Microsoft Oracle ODBC 驅動程式 2.0 或更新版本即使您不需要交易支援的驅動程式。這個新的驅動程式提供了較高的效能比它取代 Microsoft Oracle ODBC 1.0 驅動程式Oracle 1.0 驅動程式會序列化所有的活動,在驅動程式層級。要求都已單一執行緒透過驅動程式。Microsoft Oracle 2.0 和更新版本的驅動程式將序列化在連線層級的所有活動。這可讓不同要同時使用資料庫連接。
  5. 請確定已啟用 Oracle XA 支援。

    請檢查以確定已啟用 Oracle XA 交易支援。如需詳細資訊詳細資訊,請參閱章節標題為 「 啟用 Oracle XA 交易〈 使用 Oracle 資料庫與 Microsoft 交易伺服器 〉 中的支援"文件。

    1. 如果您使用 Oracle 7.3,請確定 V$ XATRANS$存在。此檢視在安裝 XA 文件庫時應該被建立。這個檢視不存在,如果您的 Oracle 系統管理員必須建立,即可以執行 Oracle 提供指令碼名稱為"XAVIEW。SQL"。找不到這個檔案在 C:\ORANT\RDBMS73\ADMIN。這個 SQL 指令碼必須以 Oracle 使用者身分執行"SYS"。

      如果您使用 Oracle8,應該會有此檢視。您應該不是需要建立它。
    2. Oracle 7.3] 及 [Oracle8,Oracle 系統系統管理員必須選取權限授予大眾上DBA_PENDING_TRANSACTIONS 檢視。
      Grant Select on V$XATRANS$ to public.
    3. 在 Oracle 執行個體管理員中,按一下 進階的模式 在上 檢視 功能表,然後選取的"初始化參數"在左窗格中。在右窗格中,選取 「 進階微調 」,並增加若要允許更多的同時 MTS 交易的"distributed_transactions"參數若要一次更新資料庫。
    如需詳細資訊,請參閱您的 Oracle 伺服器文件關於設定 Oracle XA 交易支援的資訊。
  6. 請確定已設定 [Oracle 數字字元正確。

    警告 不當使用 「 登錄編輯程式 」 可能會造成嚴重的問題,導致您必須重新安裝作業系統。Microsoft 不保證可能會因不當使用登錄編輯程式所造成的問題算出。自行承擔使用登錄編輯程式]。

    如需有關資訊如何編輯登錄,請在檢視中的 「 變更機碼及值 」 說明主題登錄編輯程式 (Regedit.exe) 或 「 新增及刪除中的資訊登錄 」 和 「 編輯登錄資料 」 說明主題 Regedt32.exe 中。請注意,您應該先登錄備份,應該先進行。

    用戶位於美國以外的系統可能需要設定 Oracle 數字字元的支援。在 Windows NT 的登錄中,找出下列登錄機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Oracle
    並將此項目:
    "NLS_NUMERIC_CHARACTERS"=".,"
    附註: 在上述的引號括住字串的字元是一段時間,千分位] 依此順序。
  7. 請確定您具有適當設定了 Oracle連線。

    如果您想要建立多個數十個的連線Oracle 資料庫,請確定 Oracle 會設定來支援其他資料庫連接。如需詳細資訊,請參閱 「 段落「 設定 Oracle 支援大型數字的連線 」 文件中〈 與 Microsoft 交易伺服器內使用 Oracle 資料庫 〉。
  8. 請確定您有連線到 Oracle 資料庫如果您使用 Oracle 整合式安全性。

    如果您使用 Oracle 整合該 MS DTC 安全性、 確定正在執行下一個登入 ID 及密碼是以連線到 Oracle 資料庫的權限。如需詳細資訊,文件中的 「 設定整合式安全性 」 一節,請參閱〈 與 Microsoft 交易伺服器內使用 Oracle 資料庫 〉。
  9. 執行 TestOracleXAConfig 程式。

    執行若要確定您可以成功連線至 TestOracleXAConfig 程式不使用伺 Oracle 資料庫。如需詳細資訊詳細資訊,請參閱 「 段落 」 測試安裝和設定的 MTS 支援 oracle'"使用中的 Oracle 資料庫Microsoft 交易伺服器內 「 文件。
  10. 執行範例銀行程式。

    執行範例銀行若要確定您可以成功連線至 Oracle 資料庫的程式從伺程式。如需詳細資訊,請參閱「 段落 」 Validating Oracle 安裝和設定使用範例的銀行應用程式 」 中的文件的"使用 Oracle 資料庫與 Microsoft交易伺服器內"。
  11. 啟用 Oracle 追蹤。

    Oracle 所能正在產生追蹤檔案,其中記錄 Oracle 之間傳送的資訊用戶端和伺服器。這些追蹤檔案可以是非常有幫助診斷發生問題。您可確定 Oracle 追蹤,如下所示:
    1. 將該安裝在 MTS 系統 Mtxoci.dll版本 1998.08.762.0 或更新版本。與發行版本 1998.08.762.0NT4 Service Pack 4 發行。這是 Mtxoci.dll 的第一版的可讓您啟用 Oracle 追蹤和控制 Oracle 追蹤的位置檔案。
    2. 使用 [檔案總管] 來尋找並刪除任何現有的先知您的系統上的追蹤檔案。這些檔案具有名稱結尾以字尾".trc"。藉由刪除所有舊的追蹤檔案,您更容易找到任何新建立的出版物。
    3. 執行 [建立下列登錄機碼登錄:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server\Local Computer\My Computer\OracleTraceFilePath
      下列的 REG_SZ 值提供給此機碼:
      C:\OraTrace+DbgFl=7
      您可以選擇一個不同的磁碟機和追蹤的目錄如果您想要的檔案。
    4. 使用 [檔案總管] 來建立 Oracle 追蹤檔案目錄。在本例中,建立目錄"OraTrace"在"C"磁碟機。
    5. 停止正在存取 Oracle MTS 套件資料庫。藉由停止的封裝即可確保所有現有的 Oracle 資料庫關閉連線,並已開啟新的 Oracle 資料庫連線的時機完成了 MTS 元件會接著叫用。這些新開啟 Oracle 資料庫連線已啟用的 Oracle 追蹤。
    6. 叫用伺元件,正在開啟 Oracle 資料庫。
    7. 檢查新建立的 Oracle 追蹤檔案。
  12. 啟用 MTS/Oracle 錯誤追蹤

    MTS 所能擷取在 Windows 中的 Oracle 錯誤有關的其他資訊應用程式事件日誌。您可以擷取這項資訊,如下所示:
    1. 執行 [建立下列登錄機碼登錄:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\MTx.Ini\TRACE
    2. 停止正在存取 Oracle MTS 套件資料庫。停止封裝就能確保 Mtxoci.dll 會執行重新啟動時的追蹤。
    3. 叫用伺元件,正在開啟 Oracle 資料庫。
    4. 若要檢視的應用程式使用 Windows 事件檢視器事件記錄檔。尋找由 MTXOCI 所產生的事件。您可能會看到事件,像是遵循:
      字串訊息: sqlld2 呼叫失敗,錯誤 0x849。
      錯誤值會顯示在八進位數。您可以使用[小算盤] 方案,可將錯誤值轉換成十進位。在這個範例中,"0x849"轉譯為 2121年,Oracle 錯誤值。
  13. 請檢查交易逾時。

    請考慮是否伺元件的交易可能已經結束之前完成資料庫登記。如果可能發生的交易逾時Oracle 資料庫登記完成之前到期。

    您可以增加透過 Microsoft 交易的交易逾時值伺服器總管]。若要執行這項操作,請執行下列步驟:

    1. 執行 Microsoft 交易伺服器總管],然後選取電腦。
    2. 以滑鼠右鍵按一下交易所在的電腦在快顯功能表上的初始化,然後選取屬性。
    3. 選取 選項 索引標籤上,並指定較長的逾時值。
    這種做法是問題的原因,除非您的交易上一次為超過一分鐘。然而,可能會很有幫助暫時增加逾時值,以消除這為潛在的問題來源。

該怎麼做,如果您仍然收到這個錯誤訊息

如果您仍然收到這個錯誤訊息所述的一切動作在此,請告知錯誤 Microsoft 產品支援服務組織。請提供下列資訊與您的問題報告。
  1. 描述的問題。沒有"無法以登錄 」 時發生錯誤但每次您嘗試使用伺交易還是失敗時斷時續呢?如果失敗時斷時續,頻率並它會發生嗎?
  2. 描述您的應用程式與系統設定。
    1. 說明系統的伺應用程式元件會安裝。如果您使用 Oracle 資料庫,提供的 Oracle 用戶端軟體和 Microsoft Oracle 版本ODBC 驅動程式是您使用。
    2. 您使用 Microsoft SQL 資料庫或 Oracle資料庫嗎?是 Microsoft 交易同一部電腦上的資料庫伺服應用程式元件或另一部電腦開啟了嗎??如果您正在使用Oracle 資料庫中,哪一種系統是安裝在 Oracle 資料庫,安裝 Oracle 軟體的版本?
    3. 您是否正在使用何種網路傳輸: 名為 [TCP/IP]管道、 IPX/SPX,等等?您是否正在使用哪種名稱服務: WINS,DNS 中,主應用程式檔案,等等?
  3. TestOracleXAConfig 程式不會執行了嗎?

    如果您正在執行 TestOracleXAConfig 程式使用 Oracle 資料庫,然後再試。If此程式失敗,問題是出 Oracle。請將問題報告Oracle 客戶支援部門。
  4. 範例銀行程式不會執行了嗎?

    試著執行範例銀行 Microsoft SQL Server 使用的程式。如果您使用 Oracle範例銀行應用程式不會執行資料庫中,使用 Oracle 時嗎?若非如此,那些錯誤您遇到嗎?
  5. 何種錯誤會報告 Oracle 追蹤檔案嗎?

    如果您使用 Oracle 資料庫,有什麼資訊存在於 Oracle 追蹤檔案中嗎?若要擷取這項資訊,請先找出並正在刪除系統上的所有現有 Oracle 追蹤檔案。這些檔案具有名稱副檔名為.trc 的結尾。刪除所有現有的追蹤檔案之後,請執行失敗伺元件,並提供與 MicrosoftOracle 追蹤檔案的內容。
  6. 何種錯誤會在 Windows NT 事件報告記錄檔嗎?

    檢查 Windows NT 事件日誌,並報告所有的 DTC 事件,所以會記錄在 100%或接近錯誤發生的時間。
  7. 您使用 Oracle 整合式安全性??

    報表您是否使用 Oracle 整合式安全性。
  8. 何謂交易的逾時值?

    請告訴 Microsoft Microsoft 裡,均設定何種交易的逾時值交易伺服器內。

?考

對於其他資訊,請按一下文件編號,檢視中的文件Microsoft 知識庫 」:
193893 使用 Oracle 資料庫與 Microsoft 交易伺服器內

屬性

文章編號: 191168 - 上次校閱: 2013年6月28日 - 版次: 3.0
這篇文章中的資訊適用於:
  • Microsoft Transaction Services 2.0
關鍵字:?
kbdatabase kberrmsg kbinfo kbmts kbmts100 kbmts200 kbmt KB191168 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:191168
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com