การแก้ไข: คุณได้รับข้อผิดพลาด 605 และข้อผิดพลาด 824 เมื่อคุณเรียกใช้แบบสอบถามที่แทรกข้อมูลลงในตารางชั่วคราวใน SQL Server

นำไปใช้กับ: SQL Server 2008 Service Pack 3

บัก: #50003826 (โปรแกรมแก้ไขด่วนของ SQL)
Microsoft กระจายแก้ไข Microsoft SQL Server 2008 เป็นแฟ้มหนึ่งแฟ้มที่สามารถดาวน์โหลดได้ เนื่องจากการแก้ไขเป็นแบบสะสม แต่ละรุ่นใหม่ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และแก้ไขการรักษาความปลอดภัยทั้งหมดที่ถูกรวมกับ SQL Server 2008 ก่อนหน้านี้แก้ไขการนำออกใช้

อาการ


ใน SQL Server 2008 คุณเรียกใช้แบบสอบถามที่แทรกข้อมูลลงในตารางชั่วคราว คำสั่ง insert ประกอบด้วยแบบสอบถามย่อยที่อ้างอิงถึงตารางชั่วคราวเดียวกัน เมื่อคุณเรียกใช้แบบสอบถาม คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับต่อไปนี้:
ข่าวสารเกี่ยวกับ 605 ระดับ 21 สถานะ 3, 1Attempt บรรทัดสามารถดึงหน้าแบบลอจิคัล (1:225) ในฐานข้อมูล 2 ล้มเหลว ถูกต้องเป็นของ 281474980315136 หน่วยการปันส่วนเพื่อ 504403158513025024 ไม่
ถ้าคุณเรียกใช้แบบสอบถามอีกครั้ง คุณได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับต่อไปนี้:
ข่าวสารเกี่ยวกับ 824 ระดับ 24 รัฐ 2 บรรทัด 1
SQL Server แบบลอจิคัลตามความสอดคล้องของข้อผิดพลาด I/O ที่ตรวจพบ: checksum ไม่ถูกต้อง (ที่คาดไว้: 0x50758180 จริง: 0x15658bfc) เกิดขึ้นในระหว่างการอ่านของหน้า (1:336) ในฐานข้อมูลที่ ID 2 ที่ออฟเซต 0x000000002a0000 ในแฟ้ม ' C:\Program Files\Microsoft SQL Server\MSSQL10 SQL2008\MSSQL\DATA\tempdb.mdf' ข้อความเพิ่มเติมใน SQL Server ข้อผิดพลาดของระบบหรือการบันทึกแฟ้มบันทึกเหตุการณ์อาจมีรายละเอียดเพิ่มเติม นี่คือเงื่อนไขข้อผิดพลาดร้ายแรงที่คุกคามความสอดคล้องของฐานข้อมูล และจำเป็นต้องแก้ไขทันที การตรวจสอบอย่างสม่ำเสมอเต็มของฐานข้อมูล (DBCC CHECKDB) ให้เสร็จสมบูรณ์ ข้อผิดพลาดนี้อาจมีสาเหตุจากหลายปัจจัย สำหรับข้อมูลเพิ่มเติม ดู SQL Server Books Online
ในบางกรณี คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับต่อไปนี้:
ข่าวสารเกี่ยวกับ 601 ระดับ 12 สถานะ 3,rocedure ชื่อกระบวนงาน pหมายเลขบรรทัดของบรรทัดไม่สามารถดำเนินต่อการสแกน ด้วย NOLOCK เนื่องจากการย้ายข้อมูลได้
โครงสร้างแบบสอบถามที่เป็นไปได้ที่สามารถทำให้เกิดข้อผิดพลาดเหล่านี้จะเป็นดังนี้:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3 

การแก้ไข


แก้ปัญหานี้ถูกนำออกใช้ก่อนใน Service Pack 3 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงนี้สำหรับ SQL Server 2008 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
960484 แพคเกจโปรแกรมปรับปรุงสะสม 3 สำหรับ SQL Server 2008
หมายเหตุ เนื่องจากรุ่นเป็นแบบสะสม แต่ละรุ่นแก้ไขใหม่ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และแก้ไขการรักษาความปลอดภัยทั้งหมดที่ถูกรวมกับ SQL Server 2008 ก่อนหน้านี้แก้ไขการนำออกใช้ เราขอแนะนำว่า คุณควรพิจารณาถึงการใช้การแก้ไขที่นำออกใช้ล่าสุดที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:
956909 สร้าง SQL Server 2008 ที่เปิดตัวหลังจากเปิดตัว SQL Server 2008
หลังจากที่คุณติดตั้งแพคเกจโปรแกรมปรับปรุงนี้ คุณต้องเปิดใช้งานการสืบค้นกลับค่าสถานะ 4135 เมื่อต้องการทำเช่นนี้ คุณสามารถเพิ่ม-T4135พารามิเตอร์การเริ่มต้นระบบได้ หรือ คุณสามารถใช้คำสั่งdbcc traceon(4135)สำหรับเซสชันที่ระบุ

การแก้ปัญหา


เมื่อต้องการหลีกเลี่ยงปัญหานี้ เพิ่มคอลัมน์ที่มีทั้งคลัสเตอร์คีย์หลักและมีคุณสมบัติ identity ไปยังตารางชั่วคราว ตัวอย่างเช่น เรียกใช้คำสั่งต่อไปนี้เพื่อเปลี่ยนแปลงตารางชั่วคราว:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

สถานะ


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

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


ถึงแม้ว่าคุณพบข้อความแสดงข้อผิดพลาด 824 หรือ 605 ฐานข้อมูลไม่เสียหายไป นอกจากนี้ ข้อผิดพลาดเหล่านี้อ้างอิงหน้าจากฐานข้อมูล tempdbสำหรับข้อมูลเพิ่มเติมเกี่ยวกับแฟ้มใดบ้างที่ถูกเปลี่ยนแปลง และ สำหรับข้อมูลเกี่ยวกับข้อกำหนดเบื้องต้นใด ๆ เพื่อนำแพคเกจโปรแกรมปรับปรุงสะสมที่ประกอบด้วยโปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความฐานความรู้ของ Microsoft นี้ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูการ บทความในฐานความรู้ของ Microsoft:
960484 แพคเกจโปรแกรมปรับปรุงสะสม 3 สำหรับ SQL Server 2008

ข้อมูล BPA R2 2008 ของเซิร์ฟเวอร์ SQL

ตัว SQL Server 2008 R2 ดีฝึกหัดวิเคราะห์ (SQL Server 2008 R2 BPA) ให้กฎตรวจพบสถานการณ์ที่คุณไม่มีการปรับปรุงสะสมหรือแฟล็กการติดตามที่เปิดใช้งานเพื่อแก้ไขปัญหานี้ BPA SQL Server 2008 R2 สนับสนุนทั้ง SQL Server 2008 และ SQL Server 2008 R2 ถ้าคุณเรียกใช้เครื่องมือ BPA และพบคำ "Database Engine - tempdb ข้อผิดพลาดแก้ไข หรือการสืบค้นกลับค่าสถานะที่ขาดหายไป" คำเตือน คุณจำเป็นต้องตรวจสอบรุ่นของ SQL Server และการสืบค้นกลับค่าสถานะที่ตั้งค่าคอนฟิกเพื่อเปิดใช้งานการแก้ไขนี้

อ้างอิง

ซอฟต์แวร์ของกฎชื่อเรื่องของกฎรหัสของกฎ
กฎ BPA ของ R2 2008 เซิร์ฟเวอร์ SQLข้อผิดพลาด tempdb แก้ไข หรือการสืบค้นกลับค่าสถานะที่ขาดหายไปRID3808
หมายเหตุ คุณสามารถเปิดใช้งานการติดตามค่าสถานะ 4135 หรือแฟล็กการติดตาม 4199 เมื่อต้องการเปิดใช้งานการแก้ไขนี้ แฟล็กการติดตาม 4135 ถูกนำมาใช้ในแพคเกจโปรแกรมปรับปรุงสะสม 3 สำหรับ SQL Server 2008 แฟล็กการติดตาม 4135 จะพร้อมใช้งาน ใน SQL Server 2008 Service Pack 1 ใน SQL Server 2008 Service Pack 2 และ ใน SQL Server 2008 R2 แฟล็กการติดตาม 4199 ถูกนำมาใช้ ในแพคเกจโปรแกรมปรับปรุงสะสม 7 สำหรับ SQL Server 2008 ในแพ็คเกจการปรับปรุงสะสม 7 สำหรับ SQL Server 2008 Service Pack 1 และ ในแพ็คเกจการปรับปรุงสะสม 1 สำหรับ SQL Server 2008 R2 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแฟล็กการติดตาม 4199 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
 974006 แฟล็กการติดตาม 4199 ถูกเพิ่มไปยังตัวควบคุมหลายแบบสอบถามตัวเพิ่มประสิทธิภาพก่อนหน้านี้การเปลี่ยนแปลงภายใต้สถานะการสืบค้นกลับหลาย
เนื่องจากการแก้ไขสำหรับปัญหานี้เกี่ยวข้องกับการรวมกันของการสร้างโปรแกรมแก้ไขด่วนเฉพาะและการสืบค้นกลับค่าสถานะเพื่อเปิดใช้งานการแก้ไข เรากำลังรวมตารางต่อไปนี้จะแสดงสถานการณ์สมมติแตกต่างกันและการดำเนินการที่แนะนำให้คุณดำเนินการสำหรับแต่ละสถานการณ์จำลองสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ SQL Server รุ่นล่าสุด คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
957826 สร้างตำแหน่งที่จะค้นหาข้อมูลเกี่ยวกับ SQL Server รุ่นล่าสุด

อ้างอิง


สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรายการรุ่นที่พร้อมใช้งานหลังจากนำออกใช้ SQL Server 2008 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
956909 สร้าง SQL Server 2008 ที่เปิดตัวหลังจากเปิดตัว SQL Server 2008
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรุ่นให้บริการแบบเพิ่มหน่วยสำหรับ SQL Server คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
935897 แบบจำลองแบบเพิ่มหน่วยให้บริการพร้อมใช้งานจากทีม SQL Server จะจัดส่งโปรแกรมแก้ไขด่วนสำหรับปัญหาที่รายงาน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแบบแผนการตั้งชื่อสำหรับการปรับปรุง SQL Server คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
822499แบบแผนการตั้งชื่อใหม่สำหรับแพคเกจปรับปรุงซอฟต์แวร์ของ Microsoft SQL Server
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับศัพท์เฉพาะในการปรับปรุงซอฟต์แวร์ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
824684 คำอธิบายของคำศัพท์มาตรฐานที่ใช้เพื่ออธิบายโปรแกรมปรับปรุงซอฟต์แวร์ของ Microsoft