การแก้ไข: แบบสอบถามกับระดับการแยกธุรกรรมที่การตั้งค่าเป็นอ่าน UNCOMMITTED ล้มเหลว ด้วยข้อผิดพลาด 601

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 815008 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
bug #: 363988 (shiloh_bugs)
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

เมื่อมีการสอบถามทำงานกับระดับการแยกธุรกรรมการตั้งค่าการอ่าน UNCOMMITTED, SQL Server 2000 aborts แบบสอบถาม และส่งกลับค่าข้อความแสดงข้อผิดพลาดต่อไปนี้:

เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 601 ระดับ 12 รัฐ 3 บรรทัด 14
ไม่สามารถทำการสแกน ด้วย NOLOCK เนื่องจากการย้ายข้อมูล

สาเหตุ

ลักษณะการทำงานนี้อาจเกิดขึ้นเมื่อมีลบแถวในตารางระหว่างเวลาใน SQL Server อ่านตำแหน่งที่ตั้งของแถวจากดัชนีและเวลาของ sql server fetches แถว

การแก้ไข

ข้อมูล Service Pack

เมื่อต้องการแก้ไขปัญหานี้ ขอรับ service pack ล่าสุดสำหรับ Microsoft SQL Server 2000 สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
290211วิธีการขอรับ service pack ล่าสุดของ SQL Server 2000

ข้อมูลโปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนรุ่นภาษาอังกฤษนี้มีแอตทริบิวต์แฟ้ม (หรือแอตทริบิวต์แฟ้มหลังจากนี้) ซึ่งแสดงในตารางต่อไปนี้ วันที่และเวลาของแฟ้มเหล่านี้จะปรากฏในรูปแบบเวลามาตรฐานสากล (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     
				
หมายเหตุ:เนื่องจากการอ้างอิงแฟ้ม โปรแกรมแก้ไขด่วนหรือคุณลักษณะที่ประกอบด้วยแฟ้มล่าสุดอาจประกอบด้วยแฟ้มเพิ่มเติม


สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "การใช้งาน"ก่อนมีแก้ไขปัญหานี้ใน Microsoft SQL Server 2000 Service Pack 4

ข้อมูลเพิ่มเติม

หลังจากที่คุณติดตั้งโปรแกรมแก้ไขด่วน คุณสามารถใช้ค่าสถานะการสืบค้นกลับ 9134 เพื่อเปลี่ยนลักษณะการทำงานของ SQL Server การเปิดใช้ค่าสถานะการสืบค้นกลับ 9134 ดังนั้นเปิดอยู่ เมื่อใดก็ตาม SQL Server เริ่ม เพิ่มค่าสถานะการสืบค้นกลับเป็นพารามิเตอร์การเริ่มต้นเซิร์ฟเวอร์ SQL เมื่อต้องการเพิ่มค่าสถานะการสืบค้นกลับ 9134 เป็นพารามิเตอร์การเริ่มต้นใช้งาน SQL Server ดำเนินการดังต่อไปนี้:
  1. คลิกขวาที่เซิร์ฟเวอร์ที่รัน SQL Server ใน SQL Server องค์กร Manager และจากนั้น คลิกคุณสมบัติ.
  2. ในการทั่วไปแท็บ คลิกเริ่มต้นใช้งานพารามิเตอร์.
  3. ในการพารามิเตอร์กล่องข้อความ ชนิด-t9134คลิกaddแล้ว คลิกตกลง.
  4. ในการProperties(Configure) เซิร์ฟเวอร์ sql-Server Name>กล่องโต้ตอบ คลิกตกลง.
  5. เริ่มบริการ SQL Server สำหรับพารามิเตอร์ใหม่จะมีผลใช้
เป็นแทน คุณสามารถรันการสอบถามต่อไปนี้ในแบบสอบถามตัววิเคราะห์เพื่อเปิดใช้ค่าสถานะการติดตามแบบไดนามิก:
DBCC TRACEON (9134, -1)
อย่างไรก็ตาม ถ้าคุณไม่ใส่ค่าสถานะการสืบค้นกลับ 9134 เป็นพารามิเตอร์เริ่มต้น ผลของคำสั่ง TRACEON DBCC จะสูญหายเมื่อรีสตาร์ทบริการ SQL Server

เมื่อสถานะของการสืบค้นกลับ 9134 เปิดอยู่ และแถวถูกลบ หรือปรับเปลี่ยนระหว่างเวลาใน SQL Server อ่านตำแหน่งที่ตั้งของแถวและเวลาดังกล่าว fetches แถวผ่านทางการค้นหาที่คั่นหน้า แบบสอบถามจะยกเลิกไม่ หรือส่งกลับข้อผิดพลาด 601 แทน SQL Server ละเว้นแถวที่ไม่สามารถหาตำแหน่ง และยังคงมีอยู่เพื่อสแกนหาแถวเพิ่มเติมที่ตรงกับเงื่อนไขการสอบถาม ดังนั้น การดำเนินการแบบสอบถามยังคง อย่างไรก็ตาม ผลลัพธ์ที่ส่งกลับค่าของ SQL Server อาจไม่รวมแถวที่ถูกลบ หรือย้ายในระหว่างการดำเนินการแบบสอบถาม

หมายเหตุ:มีการตั้งค่าข้อมูลในบทความนี้และการสืบค้นกลับค่าสถานะที่ใช้เฉพาะกับแบบสอบถามที่กำลังรัน ด้วยระดับการแยกทรานแซคชันการอ่าน UNCOMMITTED ข้อมูลที่ไม่ได้นำไปใช้กับแบบสอบถามที่ทำงานกับคำแนะนำ optimizer NOLOCK ในกรณี ลักษณะการทำงานยังคงยังคงจากเป็นสิ่งที่อธิบายไว้ในส่วน "อาการ"

นอกจากนี้ ค่าสถานะการสืบค้นกลับไม่มีผลกับข้อเท็จจริงที่ไม่สอดคล้องอื่น ๆ ข้อผิดพลาดและข้อมูลกันสามารถเกิดขึ้นเมื่อกำลังอ่านข้อมูล uncommitted สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับการแยกต่างหากที่ได้รับการสนับสนุน โดย SQL Server และลักษณะพิเศษของการใช้ระดับการแยกแต่ละ ให้ดูที่หัวข้อ "Locking" ใน SQL Server หนังสือออนไลน์

Microsoft แนะไม่นำการใช้ค่าสถานะการสืบค้นกลับนี้เว้นแต่ต่อไปนี้ทั้งหมดที่นำไปใช้:
  • โปรแกรมประยุกต์ใช้ต้องการระดับการแยกต่างหาก UNCOMMITTED อ่าน
  • โปรแกรมประยุกต์ที่ใช้งานพบข้อผิดพลาด 601 จำนวนมาก
  • คุณเข้าใจว่า เมื่อคุณใช้การตั้งค่าสถานะการสืบค้นกลับ แถวที่ถูกลบ หรือย้ายในระหว่างการดำเนินการแบบสอบถามจะถูกละเว้น
หมายเหตุ:ก่อนที่จะใช้ระดับการแยกอ่าน UNCOMMITTED คุณต้องทำความเข้าใจของฟังก์ชันการทำงาน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับการแยกที่ UNCOMMITTED อ่าน แวะไปที่เว็บไซต์ของ Microsoft สำหรับนักพัฒนาเครือข่าย (MSDN) ต่อไปนี้:
http://msdn2.microsoft.com/en-us/library/ms171885.aspx

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
235880INF: ข้อผิดพลาด 605 คำใบ้ Optimizer UNCOMMITTED อ่าน NOLOCK หรือระดับการแยกสร้าง
สำหรับข้อมูลเพิ่มเติม โปรดไปที่เว็บไซต์ต่อไปนี้ของ MSDN:
การแก้ไขปัญหาพลาด 601
.aspx http://msdn2.microsoft.com/en-us/library/aa258726 (SQL.80)
ตั้งค่าระดับการแยกธุรกรรม
.aspx http://msdn2.microsoft.com/en-us/library/aa259216 (SQL.80)

คุณสมบัติ

หมายเลขบทความ (Article ID): 815008 - รีวิวครั้งสุดท้าย: 14 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • 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
Keywords: 
kbhotfixserver kbqfe kbsqlserv2000presp4fix kbbug kberrmsg kbfix kbmt KB815008 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:815008

ให้ข้อเสนอแนะ

 

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