Sql-Server-2008-R2
連結伺服器:另一個會話正在使用的事務上下文
我正在使用連結伺服器在分佈式事務中執行一些查詢。它在分佈式事務中不起作用。我收到以下錯誤:
另一個會話正在使用的事務上下文。
即使是這個簡化的例子也行不通:
IF EXISTS(SELECT server_id from sys.servers WHERE name = 'SomeServer') BEGIN EXEC sp_dropserver @server = N'SomeServer'; END EXEC sp_addlinkedserver @server = N'SomeServer', @srvproduct = N'', @provider = N'SQLNCLI', @datasrc = N'localhost'; EXEC sp_serveroption @server = N'SomeServer', @optname = 'rpc out', @optvalue = 'on'; GO BEGIN DISTRIBUTED TRAN; EXEC('SELECT TOP 100 * FROM [SomeServer].[SomeDatabase].dbo.tblFoo') ROLLBACK; EXEC sp_dropserver @server = N'SomeServer';
刪除分發的工作,或完全刪除開始/回滾 tran 也可以。執行sp_whoisactive 不會返回任何行。我不得不多次重新啟動伺服器(在我的筆記型電腦上),因為即使我殺死了 sp_whoisactive 返回的所有 spid,我也無法殺死分佈式事務。
在那些可能的相關情況下,殺死 thos spids 不止一次給我:
SPID X:正在進行事務回滾。預計回滾完成:0%。
http://msdn.microsoft.com/en-us/library/ms188716.aspx
環回連結伺服器不能用於分佈式事務。嘗試從分佈式事務中對環回連結伺服器進行分佈式查詢會導致錯誤,例如錯誤 3910:"
$$ Microsoft $$$$ ODBC SQL Server Driver $$$$ SQL Server $$另一個會話正在使用事務上下文。”當由未啟用多個活動結果集 (MARS) 的連接發出的 INSERT…EXECUTE 語句針對環回連結伺服器執行時,此限制不適用。請注意,在連接上啟用 MARS 時,限制仍然適用。