[zt] 如何解決在 SQL Server 使用連結的伺服器時出現的錯誤 7391

tolywang發表於2009-05-16

 

本文是進行故障排除的基本指導連結伺服器錯誤 7391。 本文包含指導原則和確定原因和解決此錯誤的方法的說明。 但是,此不完整的列表,某些問題可能是特定於您的環境。
回到頂端
更多資訊
使用連結伺服器時,可能會收到錯誤 7391。在 Microsoft SQL Server 2005,您將收到下面的錯誤資訊: 伺服器: 訊息 7391,級別 1...
使用連結伺服器時,可能會收到錯誤 7391。

在 Microsoft SQL Server 2005,您將收到下面的錯誤資訊:

伺服器: 訊息 7391,級別 16,1,狀態行 1
為連結伺服器"%ls"的 OLE DB 提供程式"%ls"無法開始分散式的事務,無法執行該操作。

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

伺服器: 訊息 7391,級別 16、 狀態 1,,行 xx
無法執行該操作,因為 OLE DB 訪問介面 %ls 無法
開始分散式的事務。

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

伺服器: 訊息 7391,級別 16,狀態 1,Line 1 -操作無法執行因為
OLE DB 訪問介面 %ls 不支援分散式的事務。 [OLE/DB 提供
返回訊息: 分散式事務處理錯誤]

在某些情況下,您可能還收到以下錯誤 8522:

由 MSDTC 終止分散式的事務。


7300 7399 的區域中的所有錯誤數字,則都說明與提供程式存在問題。 預設,因為每個提供程式可能具有不同的功能,並返回不同的詳細資訊您不會收到完整的錯誤訊息。 若要從提供程式檢索完整的錯誤訊息,發出此命令在執行導致錯誤的查詢之前:
DBCC TRACEON (3604, 7300)

如果從如複製或資料轉換服務 (DTS) 的過程中收到錯誤 7391,程式碼包含在 BEGIN 分發 TRAN 語句時也可能會收到錯誤資訊。

請確保在測試中查詢分析器中有 BEGIN 分發 TRAN 語句的程式碼。
啟動查詢分析器,然後執行該語句透過登入到該伺服器使用同一帳戶在 SQL Server 以及 SQL Server 代理啟動帳戶。 這有助於縮小您的疑難解答焦點。


回到頂端
常見的解決方案
下面是錯誤 7391 最常見的解決方案的列表。

請注意 是一個好主意來限制程式碼在分散式的查詢僅向遠端伺服器的事務中。 在大多數的情況下可能從遠端步驟達到此目標分隔本地執行的步驟。

請注意 如果您使用 SQL Server 2005 使用而不是使用的查詢分析器和企業管理器 SQL Server Management Studio 執行本文中提到的操作。 請注意,某些使用者介面 SQL Server Management Studio 中可能不同於使用者介面,在查詢分析器或在企業管理器中。 請參閱 SQL Server 2005 聯機聯機中, 相關的主題,並對該操作中進行相應更改。

可支援性問題
聯絡人,您使用連結的伺服器查詢中來檢視是否驅動程式所支援的驅動程式的供應商分配交易記錄。
請檢查是否物件在目標伺服器上的涉及回到第一個伺服器。 這是稱為環回情況。 不支援此,如 SQL Server 聯機叢書所述。 有關詳細資訊,請訪問下面的 Microsoft Web 站點:

Loopback Linked Servers ()

通訊問題
請驗證您的網路名稱解析有效。 驗證在伺服器可以進行通訊與另一個名稱,而不僅僅是的 IP 地址。 簽入兩個方向 (是例如從伺服器 A 到伺服器 B 和伺服器 B 到伺服器 A)。 在執行分散式的查詢之前,必須解析網路上的所有名稱解析問題。 這可能包括更新 WINS、 DNS 或 LMHost 檔案。 有關詳細資訊,請參見在以下文章的 Microsoft 知識庫文章:


169790  ( ) 如何解決基本的 TCP/IP 問題
如果您有一個防火牆,請確保正確開啟您的遠端過程呼叫 (RPC) 埠。

有關其他資訊,請單擊下面的文章編號,以檢視 Microsoft 知識庫中相應:
154596  ( ) 如何配置帶有防火牆的工作的 RPC 動態埠分配


179442  ( ) 如何為域和信任關係配置防火牆


287932  ( ) INF: TCP 埠與 SQL Server 透過防火牆進行通訊
檢查目標伺服器引用的物件。 如果它是檢視,還是儲存的過程,或者導致觸發器的執行,檢查是否隱式引用另一臺伺服器。 如果是,第三個伺服器將是問題的起因。 直接在第三個伺服器上執行查詢。 如果您無法直接在第三個伺服器上執行的查詢,問題不實際上與連結的伺服器查詢。 首先解決基本問題。
檢查是否要使用遠端訪問伺服器 (RAS) 訪問遠端伺服器。 如果是,請確保您已實現了路由的 RAS (RRAS)。 連結的伺服器對無效 RAS 因為 RAS 允許僅單向通訊。

配置問題
啟動分散式事務中涉及的所有伺服器上的該分散式事務處理協調器 (DTC 或 MSDTC)。
在執行查詢之前發出該語句:
SET XACT_ABORT ON
The XACT _ ABORT 選項必須為對大多數 OLE DB 的隱式或顯式事務中的資料修改語句設定為 ON 提供程式,包括 SQL Server。 如果提供程式支援巢狀的事務,不需要此選項。
檢查伺服器是否在群集上。 在群集上的 DTC 必須有自己的 IP 地址。 您必須驗證每臺伺服器上的 DTC 服務的正確的名稱解析。 DTC 的 IP 地址必須定義名稱解析系統 (如 WINS、 DNS 或 LMHosts) 中。 驗證是否每個伺服器可以進行通訊與對方的 MSDTC 按名稱,而不僅僅是透過 IP 地址。 檢查在兩個方向。 是例如籤從伺服器 A 到 Server B 的 MSDTC,然後從伺服器 B 伺服器 A 的 MSDTC。 在執行分散式的查詢之前,必須解析網路上的所有名稱解析問題。
如果您使用更早版本的遠端伺服器而不是推薦的連結伺服器,設定 遠端過程 trans
配置選項設定為 OFF 在的伺服器或發出一個 SET REMOTE_PROC_TRANSACTIONS OFF
在執行任何分散式的查詢之前的語句。 如果這一設定為 ON,則遠端過程呼叫。
由本地事務中。
檢查兩個伺服器上系統函式 @ @ SERVERNAME 的返回的值。 驗證是否在
返回值與每個伺服器的計算機名稱進行相匹配。 如果它不匹配必須
重新命名該伺服器。
SQL Server 2000,請參見在以下文章的 Microsoft 知識庫文章:
303774  ( ) BUG: 重新命名聯機圖書中的 A Server 主題不完整

用於 SQL Server 7.0,檢視以下 Microsoft 知識庫文章中的問題 5:
195759  ( ) INF: 常見問題-SQL Server 7.0-SQL 安裝程式
請確保 SQL Server 啟動帳戶具有該登錄檔項的完全控制許可權:

HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
回到頂端
參考
有關配置連結的伺服器的詳細資訊,請訪問下面的 Microsoft Web 站點:Configuring Linked Servers (...
有關配置連結的伺服器的詳細資訊,請訪問下面的 Microsoft Web 站點:

Configuring Linked Servers ()

有關其他資訊,請單擊下面的文章編號,以檢視 Microsoft 知識庫中相應:
295086   ( ) FIX: MS DTC 限制到單個分散式事務中的 16 個節點
175496   ( ) XCON: 使用 Rpcping 到解決 MTA 連線問題
280106   ( ) HOW TO: 設定和疑難解答在 SQL Server Oracle 的連結的伺服器
回到頂端

--------------------------------------------------------------------------------

這篇文章中的資訊適用於:
Microsoft SQL Server 2000 標準版
Microsoft SQL Server 7.0 標準版
Microsoft SQL Server 2005 Standard Edition
Microsoft SQL Server 2005 Developer Edition
Microsoft SQL 2005 Server Enterprise
Microsoft SQL Server 2005 Express Edition
Microsoft SQL 2005 Server Workgroup
 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-598369/,如需轉載,請註明出處,否則將追究法律責任。

相關文章