在安裝 Windows Server 2003 或 Windows XP Service Pack 2 之後,對連結伺服器執行分散式的交易時,您可能會在 SQL Server 2000 中收到 7391 錯誤訊息

文章翻譯 文章翻譯
文章編號: 839279 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

您在針對 SQL Server 執行個體執行分散式的交易時您可能會收到類似下列的錯誤訊息:

伺服器: 訊息 7391,層級 16,狀態 1,行 1
無法執行作業,因為 OLE DB 提供者 'SQLOLEDB' 無法開始分散式的交易。[OLE/DB 提供者傳回訊息: 新交易無法在指定的交易協調器中編列]OLE DB 錯誤追蹤 [OLE/DB 提供者 'SQLOLEDB' ITransactionJoin::JoinTransaction 傳回 0x8004d00a]。


下列其中一種情況成立時,可能就會發生這個問題:
  • 啟動分散式的交易的電腦上安裝 Microsoft Windows Server 2003 或 Microsoft Windows XP Service Pack 2 (SP2)。
  • Microsoft Windows Server 2003 或 Microsoft Windows XP SP2 已經安裝在遠端執行 Microsoft SQL Server 2000 的電腦,而且該電腦連結到電腦會啟動分散式的交易。

發生的原因

因為一或多個下列原因,所以就會發生這個問題:
  • Microsoft 分散式交易協調器 (MSDTC) 已停用網路交易。
  • 在電腦上啟用 「 Windows 防火牆。 預設情況下,Windows 防火牆] 封鎖 Microsoft 分散式交易協調器 (MSDTC) 程式。

    附註可能會發生這個問題甚至何時 Windows 防火牆已關閉。

其他可行方案

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756如何備份和還原在 Windows 登錄


如果要解決這個問題,請安裝了 Windows Server 2003 或 Windows XP SP2 電腦上依照下列步驟執行:
  1. 請確定 MSDTC 服務的 登入身分] 帳戶是 網路服務 帳戶。要這麼做,請您執行下列步驟:
    1. 按一下 [開始],然後按一下 [執行]。
    2. 在 [執行] 對話方塊鍵入 Services.msc,再按 [確定]
    3. 在 [服務] 視窗尋找在 [名稱] 之下 分散式交易協調器 服務在右邊窗格中。
    4. 登入身份 欄看到 [登入身分] 帳戶是否為 網路服務本機系統]。

      如果 登入身分] 帳戶 網路服務 前往步驟 2。如果 登入身分] 帳戶是 本機系統 帳戶,繼續執行這些步驟。
    5. 按一下 [開始],然後按一下 [執行]。
    6. 在 [執行] 對話方塊輸入 cmd,再按 [確定]
    7. 在的命令提示字元輸入 [Net 停止 msdtc 停止 MSDTC 服務]。
    8. 在的命令提示字元輸入 [Msdtc –uninstall 移除 MSDTC]。
    9. 在的命令提示字元輸入 [regedit 以開啟 [登錄編輯程式]。
    10. 在 [登錄編輯程式] 中,找出下列機碼:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
      登錄機碼。

      刪除此機碼。
    11. 結束 「 登錄編輯程式 」。
    12. 在的命令提示字元輸入 [Msdtc –install 來將 MSDTC 安裝]。
    13. 在的命令提示字元輸入 [網路啟動 msdtc 啟動 MSDTC 服務]。

      注意 MSDTC 服務的 登入身分] 帳戶設為 [網路服務 帳戶。
  2. 啟用 MSDTC 允許網路交易。要這麼做,請您執行下列步驟:
    1. 按一下 [開始],然後按一下 [執行]。
    2. 在 [執行] 對話方塊鍵入 dcomcnfg.exe,再按 [確定]
    3. 在 [元件服務] 視窗中展開 [元件服務]、 展開 [電腦,然後再展開 [我的電腦]。
    4. 用滑鼠右鍵按一下 [我的電腦,然後按一下 [內容]。
    5. 在 [我的電腦內容] 對話方塊方塊按一下 [[MSDTC] 索引標籤上的 [安全性設定]。
    6. 在 [安全性設定] 對話方塊按一下以選取 [網路 DTC 存取] 核取方塊。
    7. 若要以便從遠端電腦在此電腦上執行的分散式的交易按一下以選取 [允許輸入] 核取方塊。
    8. 若要以便從這台電腦在遠端的電腦上執行的分散式的交易按一下以選取 [允許輸出 核取方塊。
    9. 交易管理員通訊] 群組下面按一下以選取 [無驗證所需 選項。 設定用戶端和遠端系統上的 [否驗證需要]。
    10. 在 [安全性設定] 對話方塊中,按一下 [確定]
    11. 在 [我的電腦內容] 對話方塊中,按一下 [確定]
  3. 設定 Windows 防火牆包括 MSDTC 程式,以及包含連接埠 135 與例外狀況。要這麼做,請您執行下列步驟:
    1. 按一下 [開始],然後按一下 [執行]。
    2. 在 [執行] 對話方塊輸入 Firewall.cpl,],然後再按一下 [確定]
    3. 控制台中 中, 按兩下 [Windows 防火牆]。
    4. 在 [Windows 防火牆] 對話方塊方塊按一下 [例外] 索引標籤上的 [新增程式]。
    5. 在 [新增程式] 對話方塊按一下 [瀏覽] 按鈕,然後再找出 Msdtc.exe 檔案]。預設情況下,檔案會儲存在 < 安裝磁碟機 >: \Windows\System32 資料夾。
    6. 在 [新增程式] 對話方塊中,按一下 [確定]
    7. 在 [Windows 防火牆] 對話方塊按一下以選取 [程式和服務 清單中的 [msdtc 選項。
    8. 在 [例外] 索引標籤上,按一下 [新增連接埠]。
    9. 在 [新增連接埠] 對話方塊輸入 [連接埠號碼] 文字方塊中的 [135,然後再按一下以選取 [TCP] 選項]。
    10. 在 [新增連接埠] 對話方塊在 [名稱] 文字方塊中輸入例外狀況的名稱,再按 [確定]
    11. 在 [Windows 防火牆] 對話方塊選取用於 [程式集] 及 [服務] 清單中的步驟 j 的例外狀況的名稱,再按 [確定]
  4. 測試攻擊從主機伺服器到遠端伺服器和遠端伺服器到主機伺服器使用 netbios 名稱 (伺服器名稱,但不在網域)。 Microsoft 分散式交易協調器會使用 netbios 中的不完全符合規定的網域名稱名稱找不到伺服器。如果名稱解析失敗時,分散式的交易將會失敗。 如果 Ping 使用 netbios 名稱失敗,請參閱以下知識庫文件:
    172218Microsoft TCP/IP 主機名稱解析順序

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

其他相關資訊

重現這個問題的步驟

  1. 登入具有 Windows Server 2003 或安裝 Windows XP SP2 的電腦。
  2. 開始查詢分析。
  3. 新增為連結伺服器執行 Microsoft SQL Server 2000 的遠端電腦。若要執行此動作在查詢中執行下列的 Transact-SQL 陳述式分析:
    EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER'
    GO

    附註必須設定為連結伺服器的電腦的名稱取代 remote_server
  4. 在這台電腦與遠端電腦間執行分散式的交易。如果要執行此動作請在 Query Analyzer 中執行下列的 Transact-SQL 陳述式:
    SET xact_abort ON 
    GO
    USE  pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT  *  FROM <remote_server>.pubs.dbo.authors
    COMMIT TRAN
    GO
    
    您可能會收到錯誤訊息本文 < 徵狀 > 一節所述。

?考

如更多有關使用的 SQL Server 2000 設定 Windows XP Service Pack 2,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
841249如何使用的 SQL Server 設定 Windows XP Service Pack 2

屬性

文章編號: 839279 - 上次校閱: 2009年8月25日 - 版次: 4.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft Windows XP Embedded
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
關鍵字:?
kbmt kbregistry kberrmsg kbdtc kbdomain kbauthentication kbtransaction kbrpc kbprb KB839279 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:839279
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