Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

อาการ

พิจารณาสถานการณ์ต่อไปนี้:

  • คุณมีสองพาร์ติชันตารางใน Microsoft SQL Server ๒๐๑๔และพาร์ติชันของตารางแรกจะถูกแมปไปยังไฟล์และ filegroups ที่แตกต่างกันโดยใช้ชุดรูปแบบพาร์ติชันและฟังก์ชันเดียวกัน

  • คุณสลับหนึ่งในพาร์ติชันเหล่านั้นไปยังตารางที่สองและจากนั้นคุณตัดตารางที่สอง

  • คุณวางไฟล์และ filegroups ที่ถูกแมปไปยังพาร์ติชันที่ถูกสลับ

  • คุณเรียกใช้คำสั่ง SELECT บนตารางที่สอง

ในสถานการณ์สมมตินี้คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

Msg ๖๐๖ระดับ21รัฐ1Metadata ไม่สอดคล้องกัน Id กลุ่มที่<id กลุ่ม> ที่ระบุสำหรับตาราง <ชื่อตาราง ที่> ไม่มีอยู่ เรียกใช้ DBCC CHECKDB หรือ CHECKCATALOG

เมื่อคุณเรียกใช้ DBCC CHECKDB/CHECKTABLE คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

ไม่สามารถทำการประมวลผลดัชนี <IndexName> ของตาราง <ชื่อ> ได้เนื่องจากกลุ่มแฟ้ม (กลุ่มผู้เข้ากลุ่ม <> FileGroupNumber ) ไม่ถูกต้อง

การแก้ไข

ปัญหานี้ได้รับการแก้ไขครั้งแรกในการอัปเดตที่สะสมของ SQL Server ต่อไปนี้:

การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ เราขอแนะนำให้คุณดาวน์โหลดและติดตั้งการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:

หมายเหตุ การแก้ไขนี้จะป้องกันปัญหาที่เกิดขึ้นในอนาคตเท่านั้น ถ้าคุณกำลังประสบปัญหานี้อยู่แล้วให้ส่งออกข้อมูลของคุณลงในฐานข้อมูลใหม่โดยไม่มีความเสียหายของ metadata ที่มีอยู่ โดยทำตามขั้นตอนต่อไปนี้:

  1. เมื่อต้องการตรวจสอบว่าพาร์ติชันมีกลุ่มไฟล์ที่ไม่ถูกต้องหรือไม่ให้เรียกใช้คิวรีต่อไปนี้เพื่อดูว่าผลลัพธ์ดังกล่าวจะส่งกลับผลลัพธ์หรือไม่

    SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
  2. ทำให้ตารางที่มีความเสียหายของ metadata สามารถดูได้อีกครั้ง ถ้าคิวรีจากขั้นตอนที่1ส่งกลับผลลัพธ์พาร์ติชันที่มี metadata ที่เสียหายจะทำให้คุณไม่สามารถดูได้ (เลือก * จาก) แถวใดก็ได้ในตาราง เมื่อต้องการแก้ไขปัญหานี้ให้เอาพาร์ติชันที่ไม่ถูกต้องออกหมายเหตุ พาร์ติชันที่ไม่ถูกต้องควรว่างเปล่า มิฉะนั้นไฟล์และกลุ่มไฟล์ที่ไม่ได้ถูกลบหรือลบไปแล้ว เมื่อต้องการทำเช่นนี้ให้ย้ายพาร์ติชันนี้ไปยังตารางอื่นที่ใช้ชุดรูปแบบการแบ่งพาร์ติชันเดียวกัน ตารางนี้อาจเป็นเพียงตาราง dummy ใช้ container_id จากคิวรีในขั้นตอนที่1และจับคู่กับ partition_id จากพาร์ติชัน sys (ตรวจสอบให้แน่ใจว่าคุณได้บันทึก partition_number) ใช้ partition_number เพื่อทำการเปลี่ยนแปลงพาร์ติชันสลับตารางจากตารางที่ถูก unviewable ไปยังตาราง dummy ตาราง dummy ควรมีชุดคอลัมน์เดียวกันและใช้ชุดรูปแบบพาร์ติชันเดียวกัน คิวรีของคุณเพื่อค้นหาพาร์ติชันที่ไม่สอดคล้องกันอาจมีลักษณะดังต่อไปนี้:

    SELECT au.container_id, au.data_space_id, p.partition_number FROM sys.partitions AS p JOIN sys.allocation_units AS au ON p.partition_id = au.container_id LEFT JOIN sys.filegroups AS fgs ON fgs.data_space_id = au.data_space_id WHERE object_id = OBJECT_ID('MyTableName') AND fgs.data_space_id IS NULL;
  3. คัดลอกข้อมูลจากตาราง unviewable ก่อนหน้านี้ลงในฐานข้อมูลใหม่

สถานะ

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

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย