FIX: MS DTC 交易認可作業封鎖本身

文章編號: 821740 - 檢視此文章適用的產品。
Bug #: 469703 (SHILOH_BUGS)
全部展開 | 全部摺疊

在此頁中

徵狀

Microsoft 分散式交易協調器 (MS DTC) 交易認可作業上本身可能會造成封鎖案例。在 SQL Server sysprocesses 資料表輸出 SQL Server 處理序 ID 號碼 (SPID) 低於 50,並顯示自我區塊。比方說 sysprocesses 資料表輸出可能會顯示下列區塊:
由 SPID 封鎖 SPID 8 8

附註MS DTC 認可作業一定會發生在系統工作執行緒上。

解決方案

服務套件資訊

如果要解決這個問題,取得最新的 Service Pack,Microsoft SQL Server 2000。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
290211如何取得最新的 SQL Server 2000 Service Pack

Hotfix 資訊

此修正程式的英文版具有檔案屬性 (或更新) 中如下表所列。這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。若要到 UTC 與當地時間差異使用 [中日期] 和 [時間] 工具,在 [控制台] 中的 [時區] 索引標籤]。
   Date         Time   Version         Size       File name
   -------------------------------------------------------------------
   31-May-2003  18:45  2000.80.818.0      78,400  Console.exe      
   25-Jun-2003  01:01  2000.80.818.0      33,340  Dbmslpcn.dll     
   25-Apr-2003  02:12                    786,432  Distmdl.ldf
   25-Apr-2003  02:12                  2,359,296  Distmdl.mdf
   30-Jan-2003  01:55                        180  Drop_repl_hotfix.sql
   23-Jun-2003  22:40  2000.80.837.0   1,557,052  Dtsui.dll        
   23-Jun-2003  22:40  2000.80.837.0     639,552  Dtswiz.dll       
   24-Apr-2003  02:51                    747,927  Instdist.sql
   03-May-2003  01:56                      1,581  Inst_repl_hotfix.sql
   08-Feb-2003  06:40  2000.80.765.0      90,692  Msgprox.dll      
   01-Apr-2003  02:07                      1,873  Odsole.sql
   05-Apr-2003  01:46  2000.80.800.0      62,024  Odsole70.dll     
   07-May-2003  20:41  2000.80.819.0      25,144  Opends60.dll     
   02-Apr-2003  21:48  2000.80.796.0      57,904  Osql.exe         
   02-Apr-2003  23:15  2000.80.797.0     279,104  Pfutil80.dll     
   22-May-2003  22:57                     19,195  Qfe469571.sql
   12-Jun-2003  16:37                  1,083,989  Replmerg.sql
   04-Apr-2003  21:53  2000.80.798.0     221,768  Replprov.dll     
   08-Feb-2003  06:40  2000.80.765.0     307,784  Replrec.dll      
   05-May-2003  00:05                  1,085,874  Replsys.sql
   01-Jun-2003  01:01  2000.80.818.0     492,096  Semobj.dll       
   31-May-2003  18:27  2000.80.818.0     172,032  Semobj.rll
   29-May-2003  00:29                    115,944  Sp3_serv_uni.sql
   01-Jun-2003  01:01  2000.80.818.0   4,215,360  Sqldmo.dll       
   07-Apr-2003  17:44                     25,172  Sqldumper.exe    
   19-Mar-2003  18:20  2000.80.789.0      28,672  Sqlevn70.rll
   02-Jul-2003  00:18  2000.80.834.0     180,736  Sqlmap70.dll     
   08-Feb-2003  06:40  2000.80.765.0      57,920  Sqlrepss.dll     
   23-Jun-2003  22:40  2000.80.837.0   7,553,105  Sqlservr.exe     
   08-Feb-2003  06:40  2000.80.765.0      45,644  Sqlvdi.dll       
   25-Jun-2003  01:01  2000.80.818.0      33,340  Ssmslpcn.dll     
   01-Jun-2003  01:01  2000.80.818.0      82,492  Ssnetlib.dll     
   01-Jun-2003  01:01  2000.80.818.0      25,148  Ssnmpn70.dll     
   01-Jun-2003  01:01  2000.80.818.0     158,240  Svrnetcn.dll     
   31-May-2003  18:59  2000.80.818.0      76,416  Svrnetcn.exe     
   30-Apr-2003  23:52  2000.80.816.0      45,132  Ums.dll          
   02-Jul-2003  00:19  2000.80.834.0      98,816  Xpweb70.dll  
附註由於檔案相依性最新版 Hotfix 或包含這些檔案的功能也可能包含其他檔案。

狀況說明

Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的問題。 這個問題,首先已經在 Microsoft SQL Server 2000 服務套件 4 中獲得修正。

其他相關資訊

當 MS DTC 認可作業會試著修改適當的資料列與更新 sysindexes 資料表時,就會發生這個問題。如果原始的交易活動會取得 (EX) sysobjects 資料表或 sysindexes 資料表上的鎖定獨占,自我區塊可能會發生一次的 DTC 認可作業。這種情況通常會原始交易活動會建立資料表或索引,並也讓 [加入項目或減法資料表時發生。 其中一個行為的觸發程序是 開啟 [物件] 選項。仔細檢閱 開啟物件 的選項,SQL Server 2000 執行個體可能會遇到一次的問題和 sp_configure 設定的數目。

如其他有關這個問題和 Bug # 469704,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
821740FIX: 在 DeadlockMonitor::ResolveDeadlock 鎖定監視器例外狀況
ChildEBP RetAddr  Args to Child              
09a6f138 77ea9b35 00001324 00000001 00000000 NTDLL!ZwWaitForSingleObject+0xb [i386\usrstubs.asm @ 2004]
WARNING: Stack unwind information not available. Following frames may be wrong.
09a6f160 410749ac 00001324 ffffffff 00000001 KERNEL32!WaitForSingleObjectEx+0x71
09a6f17c 41072495 038ba5f0 038c7e00 038ba5f0 ums!UmsThreadScheduler::Switch+0x4c [p:\sql\ums\src\umsthrd.cpp @ 486]
09a6f1a0 410721d6 038ba5f0 4cb24564 09a6f1d8 ums!UmsScheduler::IdleLoop+0x105 [p:\sql\ums\src\umsched.cpp @ 1355]
09a6f1b4 41072d1e ffffffff 00000001 025ad1d8 ums!UmsScheduler::Suspend+0x66 [p:\sql\ums\src\umsched.cpp @ 1181]
09a6f1d8 00401202 ffffffff 00000000 00000000 ums!UmsEvent::Wait+0x8e [p:\sql\ums\src\umsevent.cpp @ 320]
09a6f21c 004378d5 ffffffff 025ad1d8 00000000 sqlservr!ExecutionContext::WaitForSignal+0x1b5 [p:\sql\ntdbms\storeng\dfs\startup\proc.c @ 1058]
09a6f254 00402d66 09a6f2e8 09a6f378 4815b1c0 sqlservr!LockOwner::Sleep+0x13d [p:\sql\ntdbms\storeng\dfs\manager\lckmgr.cpp @ 3273]
09a6f2c8 00404162 09a6f2e8 09a6f378 00000000 sqlservr!lck_lock+0x799 [p:\sql\ntdbms\storeng\dfs\manager\lckmgr.cpp @ 7173]
09a6f310 0040795e 09a6f378 00000003 00000000 sqlservr!SDES::GetLock+0x19d [p:\sql\ntdbms\storeng\dfs\access\access.c @ 870]
09a6f34c 00405c50 00000003 00000001 09a6f378 sqlservr!SDES::AcquireRowLockForScan+0x1e8 [p:\sql\ntdbms\storeng\dfs\access\getnext.c @ 1623]
09a6f3c8 00409a57 00000001 00000000 4815b1c0 sqlservr!SDES::GetBiDi+0x4ae [p:\sql\ntdbms\storeng\dfs\access\getnext.c @ 613]
09a6f41c 00409d0f 00000000 09a6f4bc 09a6f89c sqlservr!CSysScan::FGetNext+0x7f [p:\sql\ntdbms\msql\ddl\sysscan.cpp @ 3544]
09a6f434 0044d245 09a600c4 00000001 00000001 sqlservr!CSysScan::StartScan+0x163 [p:\sql\ntdbms\msql\ddl\sysscan.cpp @ 792]
09a6f49c 004f714a 09a6f89c 5587e178 00000000 sqlservr!CObjectScan::FFindById+0x95 [p:\sql\ntdbms\msql\ddl\sysscan.cpp @ 3711]
09a6f8d0 0080804d 494900c4 055d808b 42b7deb0 sqlservr!createdes+0xbe [p:\sql\ntdbms\storeng\dfs\manager\desmgr.cpp @ 679]
09a6f928 0041719c 42b7db28 494900c4 42b7deb0 sqlservr!chgind_delta+0x78 [p:\sql\ntdbms\storeng\dfs\access\chgsysin.c @ 558]
09a6f95c 0047b973 00000001 42b7db28 3f44b680 sqlservr!XdesRMFull::FlushAllSysIndexCaches+0x88 [p:\sql\ntdbms\storeng\dfs\trans\xdes.cpp @ 6992]
09a6f988 0086896a 3f44a908 00000000 00000000 sqlservr!XdesRMFull::Prepare+0x4f [p:\sql\ntdbms\storeng\dfs\trans\xdes.cpp @ 5813]
09a6f9a4 0086881c 00a1a308 3f44b680 00000000 sqlservr!XactRM::PrepareLocalXact+0x7b [p:\sql\ntdbms\storeng\dfs\trans\xactrm.cpp @ 646]
09a6f9c4 008696ce 77843790 00867868 00000005 sqlservr!XactRM::Commit+0x163 [p:\sql\ntdbms\storeng\dfs\trans\xactrm.cpp @ 472]
09a6f9cc 00867868 00000005 46b0ebc0 00000000 sqlservr!XactRM::CommitDTCXactSinglePhase+0x4b [p:\sql\ntdbms\storeng\dfs\trans\xactrm.cpp @ 1966]
09a6fc14 00864172 00000001 00000335 00a1a3d8 sqlservr!DtcXactRMOnly::PrepareDTCXact+0xc1 [p:\sql\ntdbms\storeng\dfs\trans\xact.cpp @ 3450]
09a6fc6c 004091fe 00bd6780 4cb24098 00000000 sqlservr!ISSResourceAsynch::DoTMWork+0x671 [p:\sql\ntdbms\storeng\dfs\trans\viperrm.cpp @ 2245]
09a6feac 004090d1 09a6fef8 410728a7 760846c8 sqlservr!CWorker::ProcessTskPkt+0xea [p:\sql\ntdbms\storeng\common\ondemand.cpp @ 390]
09a6feb4 410728a7 760846c8 00408cf6 00bd6780 sqlservr!TaskThread+0x14 [p:\sql\ntdbms\storeng\common\ondemand.cpp @ 475]
09a6febc 00408cf6 00bd6780 038ba61c 00000000 ums!UmsSystemUserContext::RunTask+0x7 [p:\sql\ums\src\umsched.cpp @ 1730]
09a6fef8 41075002 038ba5f0 038ba5f0 00000002 sqlservr!SystemTaskEntryPoint+0x98 [p:\sql\ntdbms\storeng\dfs\startup\conn_hdl.c @ 3365]
09a6ff6c 41074698 00bd6788 038bb1a8 09a6ffb4 ums!ProcessWorkRequests+0x272 [p:\sql\ums\src\umsworkq.cpp @ 451]
09a6ff80 7800c9eb 00bd6780 000b32b8 00adb010 ums!ThreadStartRoutine+0x98 [p:\sql\ums\src\umsthrd.cpp @ 263]
09a6ffb4 77e8b2d8 038bb1a8 000b32b8 00adb010 msvcrt!_threadstart+0x57 [thread.c @ 174]
09a6ffec 00000000 7800c994 038bb1a8 00000000 KERNEL32!lstrcmpiW+0xb7
死結監視器偵測到問題,並且嘗試解決它。因為在本質上都是屬於認可作業處理,死結監視器無法解決這個問題造成 Bug # 469704。下列的簡短的堆疊傾印檔案就會記錄:
* Short Stack Dump
* 00845549 Module(sqlservr+00445549) (DeadlockMonitor::ResolveDeadlock+00000025 Line 583+00000006)
* 00845438 Module(sqlservr+00445438) (DeadlockMonitor::SearchAndResolve+00000134 Line 424+00000000)
* 004C2D12 Module(sqlservr+000C2D12) (lockMonitor+000002F7 Line 6600+00000000)
* 004C2BBC Module(sqlservr+000C2BBC) (lockMonitorThread+000000A4 Line 6414+00000005)
* 41072838 Module(UMS+00002838) (ProcessWorkRequests+00000272 Line 451+00000000)
* 410725B3 Module(UMS+000025B3) (ThreadStartRoutine+00000098 Line 263+00000007)
* 77C37E53 Module(MSVCRT+00027E53) (endthread+000000AA)
* 77E7D33B Module(kernel32+0001D33B) (RegisterWaitForInputIdle+00000043)

屬性

文章編號: 821740 - 上次校閱: 2007年11月2日 - 版次: 5.3
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
關鍵字:?
kbmt kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB821740 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:821740
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見