FIX: 交易隔離層級設定為 [讀取未認可的查詢失敗,並顯示錯誤 601

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

在此頁中

徵狀

當查詢執行具有設定為 [讀取未認可其交易隔離等級時,SQL Server 2000 中止查詢,並傳回下列錯誤訊息:

伺服器: 訊息 601、 層級 12、 狀態 3、 行 14
無法繼續,因為資料移動到使用 NOLOCK 掃描。

發生的原因

當 SQL Server 會從索引中讀取資料列的位置與 SQL Server 會提取資料列之間刪除一個資料表中的資料列時,可能就會發生這個問題。

解決方案

服務套件資訊

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

Hotfix 資訊

此 Hotfix 的英文版在檔案屬性 (或更新版本的檔案屬性) 如下列表格中所列。 這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。若要到 UTC 與當地時間差異使用 [中日期] 和 [時間] 工具,在 [控制台] 中的 [時區] 索引標籤]。
Date		Time	Version		Size		 File name
-----------------------------------------------------------------------------

07-Feb-2003	16:14			  786,432 bytes  Distmdl.ldf
07-Feb-2003	16:14			2,359,296 bytes  Distmdl.mdf
29-Jan-2003	12:25			      180 bytes  Drop_repl_hotfix.sql
31-Jan-2003	11:02	2000.80.763.0	1,557,052 bytes	 Dtsui.dll     
29-Jan-2003	15:48			  746,470 bytes  Instdist.sql
29-Jan-2003	12:25	                    1,402 bytes  Inst_repl_hotfix.sql
07-Feb-2003	17:10	2000.80.765.0      90,692 bytes  Msgprox.dll  
29-Jan-2003	11:48	7.0.9466.0        344,064 bytes  Msvcr70.dll      
29-Jan-2003	11:48	2000.80.722.0      57,904 bytes  Osql.exe         
07-Feb-2003	14:23                   1,065,895 bytes  Replmerg.sql
07-Feb-2003	17:10	2000.80.765.0	  221,768 bytes  Replprov.dll     
07-Feb-2003	17:10	2000.80.765.0     307,784 bytes  Replrec.dll      
29-Jan-2003	15:48		   	1,084,318 bytes  Replsys.sql
29-Jan-2003	11:48	2000.80.534.0	  127,548 bytes  Sqdedev.dll    
07-Feb-2003	17:10	2000.80.765.0	  176,696 bytes  Sqlmap70.dll  
07-Feb-2003	17:10	2000.80.765.0	   57,920 bytes  Sqlrepss.dll    
14-Feb-2003	13:22	2000.80.769.0   7,512,145 bytes  Sqlservr.exe   
29-Jan-2003	11:48	2000.80.194.0     180,290 bytes  Sqlunirl.dll     
07-Feb-2003	17:10	2000.80.765.0      45,644 bytes  Sqlvdi.dll   
07-Feb-2003	17:10	2000.80.765.0      82,492 bytes  Ssnetlib.dll     
				
附註由於檔案相依性最新版 Hotfix 或包含檔案的功能也可能包含其他檔案。


狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。這個問題,首先已經在 Microsoft SQL Server 2000 Service Pack 4 中獲得修正。

其他相關資訊

安裝 Hotfix 之後,您可以使用追蹤旗標 9134 變更 SQL Server 的行為。如果要啟用追蹤旗標 9134 使它已開啟每當 SQL Server 啟動,新增追蹤旗標為 SQL Server 啟動參數。若要將追蹤旗標 9134 新增為 SQL Server 啟動參數,請依照下列步驟執行:
  1. 在 [SQL Server 企業管理員] 中,執行 SQL Server 的伺服器上按一下滑鼠右鍵,然後按一下 [內容]。
  2. 在 [一般] 索引標籤上按一下 [啟動參數
  3. 在 [參數] 文字方塊中輸入 -T9134,按一下 [新增],然後再按一下 [確定]
  4. 在 SQL Server Properties(Configure)-<伺服器名稱 > 對話方塊] 方塊中,按一下 [確定]
  5. 重新啟動 SQL Server 服務,新的參數,才會生效。
另一個方法,您可以在要動態地開啟追蹤旗標的 Query Analyzer 中執行下列查詢:
DBCC TRACEON (9134, -1)
但是,如果您不能作為啟動參數新增追蹤旗標 9134,DBCC TRACEON 命令的效果會遺失 SQL Server 服務重新啟動時。

當追蹤旗標 9134 電源已經開啟,而且刪除或修改 SQL Server 會讀取資料列的位置和它擷取透過書籤查閱列之間的資料列時,查詢不會中止或傳回錯誤 601。改,SQL Server 會忽略之找不到資料列,並且繼續掃描其他符合查詢準則的資料列。 因此,繼續查詢執行 ; 然而,SQL Server 將傳回的結果可能不包含已刪除或移動的查詢執行期間的資料列。

附註旗標只套用至交易隔離等級與正在執行的查詢在這篇文章和追蹤資訊設定為讀取未認可。該資訊並不會套用到查詢執行有 NOLOCK 最佳化工具提示。在這種情況下行為會保持不變從什麼是 「 徵狀 > 一節中所述。

而且,追蹤旗標不會影響事實時讀取未認可的資料可能發生其他錯誤和資料不一致之處。如需有關支援的 SQL Server 與使用每個隔離等級的效果的隔離等級的詳細資訊,請參閱 SQL Server 線上叢書 》 中的 「 鎖定 」 主題]。

Microsoft 不建議此追蹤旗標使用,除非所有下列都套用:
  • 使用中的應用程式需要讀取未認可的隔離等級。
  • 使用中的應用程式發生大量的 601 錯誤。
  • 您瞭解當您使用 [追蹤旗標的已刪除或移動的查詢執行期間的資料列被忽略。
附註使用讀取未認可的隔離等級之前您必須了解它的功能。如需有關讀取未認可的隔離等級的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/ms171885.aspx

?考

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
235880INF: 最佳化工具提示 NOLOCK 或讀取未認可的隔離等級會產生錯誤 605
如需詳細資訊請造訪下列 MSDN 網站]:
疑難排解錯誤 601
http://msdn2.microsoft.com/en-us/library/aa258726(SQL.80).aspx
設定交易隔離等級
http://msdn2.microsoft.com/en-us/library/aa259216(SQL.80).aspx

屬性

文章編號: 815008 - 上次校閱: 2007年11月2日 - 版次: 6.6
這篇文章中的資訊適用於:
  • 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 kbsqlserv2000presp4fix kbbug kberrmsg kbfix KB815008 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:815008
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