We couldn’t sign you in
Select the account you want to use.

結論

本文是疑難排解連結伺服器錯誤 7391 的基本指南。本文包含一些指導方針及指示,幫助您確定這個錯誤的原因和解決方案。但本文並不是完整的清單,有些問題可能是您的環境特有的問題。

其他相關資訊

您在使用連結伺服器時,可能會遇到錯誤 7391。

在 Microsoft SQL Server 2005 中,您會收到下列錯誤訊息:


Server:Msg 7391, Level 16, State 1, Line 1
The operation could not be performed because OLE DB provider "%ls" for linked server "%ls" was unable to begin a distributed transaction. (因為連結伺服器 %ls 的 OLE DB 提供者 %ls 無法開始分散式交易,所以無法執行此操作)


在 SQL Server 2000 中,您收到的錯誤訊息是:


Server:Msg 7391, Level 16, State 1, <ObjectName>, Line xx
The operation could not be performed because the OLE DB provider '%ls' was unable to
begin a distributed transaction. (由於 OLE DB Provider '%ls' 無法開始分散式交易,所以無法執行此操作)


在 SQL Server 7.0 中,您收到的錯誤訊息是:


Server:Msg 7391, Level 16, State 1, Line 1 The operation could not be performed because
the OLE DB provider '%ls' does not support distributed transactions.[OLE/DB provider
returned message:Distributed Transaction error] (由於 OLE DB Provider '%ls' 不支援分散式交易,所以無法執行此操作。[OLE/DB Provider 傳回訊息:分散式交易錯誤])


在某些情況下,您可能也會收到下列錯誤 8522:

分散式交易由 MSDTC 中止。



所有介於 7300 到 7399 範圍內的錯誤號碼,都表示是提供者發生問題。根據預設,因為每個提供者各有不同功能,而且會傳回不同的詳細資訊,所以您不會收到完整的錯誤訊息。如果要擷取提供者傳回的完整錯誤訊息,請先執行這個命令,再執行會產生錯誤的查詢:

DBCC TRACEON (3604, 7300)


如果您從複寫或「資料轉換服務」(DTS) 之類的程序收到錯誤 7391,則當程式碼包含 BEGIN DISTRIBUTED TRAN 陳述式時,您可能也會收到錯誤訊息。

請確定在 Query Analyzer 中測試包含 BEGIN DISTRIBUTED TRAN 陳述式的程式碼。
啟動 Query Analyzer,使用與 SQL Server 和 SQL Server 代理程式啟動帳戶相同的帳戶登入伺服器,然後執行這個陳述式。這將有助於縮小疑難排解的焦點。

最常見的解決方案

下列是錯誤 7391 最常見的解決方案清單。

注意 交易如果涉及分散式查詢,您最好將程式碼限制在遠端伺服器的範圍內。在大部分情況下,您可以將本機執行的步驟與遠端步驟分開,來達到這個目的。

注意 如果您是使用 SQL Server 2005,請使用 SQL Server Management Studio 來執行本文中提及的操作,而不要使用 Query Analyzer 和 Enterprise Manager。請注意,SQL Server Management Studio 中的某些使用者介面可能和 Query Analyzer 或 Enterprise Manager 中的介面不同。請參閱《SQL Server 2005 線上叢書》中的相關主題,並針對操作進行對應的變更。

支援能力問題

  • 連絡您在連結伺服器查詢中所使用驅動程式的廠商,確定該驅動程式是否支援分散式交易。

  • 檢查目的地伺服器上的物件是否會參照回第一部伺服器。這會形成所謂的迴路狀況。根據《SQL Server 線上叢書》的說明,目前不支援這種狀況。如需詳細資訊,請造訪下列 Microsoft 網站:

    迴路連結伺服器 (英文)


通訊問題

  • 確認您的網路名稱解析功能有作用。確認伺服器能夠使用名稱相互通訊,而非只使用 IP 位址。雙向都要檢查 (例如,從伺服器 A 到伺服器 B,以及從伺服器 B 到伺服器 A)。您必須先解決網路上的所有名稱解析問題後,才能執行分散式查詢。這可能涉及更新 WINS、DNS 或 LMHost 檔。如需詳細資訊,請參閱「Microsoft 知識庫」中的下列文件:

    169790 如何疑難排解基本的 TCP/IP 問題

  • 如果您有防火牆,請確定您的遠端程序呼叫 (RPC) 連接埠已正確開啟。

    如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

    154596 如何設定 RPC 動態連接埠配置以使用防火牆

    179442 如何設定網域和信任的防火牆

    287932 INF:透過防火牆和 SQL Server 通訊所需的 TCP 通訊埠

  • 檢查目的地伺服器上您參照的物件。如果該物件是檢視或預存程序,或會導致觸發程序開始執行,請檢查該物件是否隱含參照到另一部伺服器。如有這種情況,表示問題來源在第三部伺服器。請直接在第三部伺服器上執行查詢。如果無法直接在第三部伺服器上執行查詢,表示實際上並不是連結伺服器查詢有問題。請先解決根本的問題。

  • 檢查您是否使用「遠端存取伺服器」(RAS) 存取遠端伺服器。如果是的話,請確定您已經執行「路由 RAS」(RRAS)。連結伺服器無法用在 RAS 上,因為 RAS 只允許單向通訊。


設定問題

  • 在分散式交易涉及的所有伺服器上,啟動 Distributed Transaction Coordinator (DTC 或 MSDTC)。

  • 請先執行這個陳述式後,再執行查詢:

    SET XACT_ABORT ON

    對於針對大部分 OLE DB Provider (包含 SQL Server) 的隱含或明確交易中的資料修改陳述式,XACT_ABORT 選項必須設定為 ON。如果提供者支援巢狀交易,則不需要這個選項。

  • 檢查是否有任何伺服器在叢集上。叢集上的 DTC 必須有它自己的 IP 位址。您必須確認每部伺服器上的 DTC 服務可以正確解析名稱。DTC 的 IP 位址必須在您的名稱解析系統 (例如 WINS、DNS 或 LMHosts) 中定義。確認每部伺服器能夠使用名稱與彼此的 MSDTC 進行通訊,而非只使用 IP 位址。雙向都要檢查。例如,檢查從伺服器 A 到伺服器 B 的 MSDTC,然後檢查從伺服器 B 到伺服器 A 的 MSDTC。您必須先解決網路上的所有名稱解析問題後,才能執行分散式查詢。

  • 如果您使用較早的遠端伺服器,而非建議的連結伺服器,請將伺服器的 remote proc trans
    設定選項設定為 OFF,或執行 SET REMOTE_PROC_TRANSACTIONS OFF

    陳述式後,再執行任何分散式查詢。如果這個設定值設定為 ON,則遠端程序呼叫
    會以本機交易的方式進行。

  • 檢查兩部伺服器上系統函數 @@SERVERNAME 的傳回值。確認
    傳回值是否符合每部伺服器的電腦名稱。如果不符合,您必須
    重新命名伺服器。
    如需 SQL Server 2000 的資訊,請參閱「Microsoft 知識庫」中的下列文件:

    303774 BUG: "Renaming A Server" Topic in SQL Server Books Online is Incomplete

    對於 SQL Server 7.0,請查閱下列「Microsoft 知識庫」文件中的問題 5:

    195759 INF: Frequently Asked Questions - SQL Server 7.0 - SQL Setup

  • 確認 SQL Server 啟動帳戶對這個登錄機碼具有完整控制權限:

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer

参考

如需有關設定連結伺服器的詳細資訊,請造訪下列 Microsoft 網站:

設定連結伺服器 (英文)

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

295086 FIX: MS DTC Limited to 16 Nodes in Single Distributed Transaction

175496 XCON:使用 RPCPING 對 MTA 連結進行疑難排解

280106 如何在 SQL Server 中設定 Oracle 連結伺服器並進行疑難排解

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×