ความพยายามดึงหน้าโลจิคัล (5: 65424) ในฐานข้อมูล 2 ล้มเหลว


11

ฉันได้รับข้อมูลต่อไปนี้SqlExceptionในการเรียกขั้นตอนที่เก็บไว้:

ความพยายามดึงหน้าโลจิคัล (5: 65424) ในฐานข้อมูล 2 ล้มเหลว มันเป็นของหน่วยการจัดสรร 7349876362857938944 ไม่เป็น 4899918190390149120

System.Data.SqlClient.SqlException เกิดขึ้น
Message = "ความพยายามดึงหน้าโลจิคัล (5: 65424) ในฐานข้อมูล 2 ล้มเหลวมันเป็นของหน่วยการจัดสรร 7349876362857938944 ไม่ใช่ 4899918190390149120

ที่มา = "ผู้ให้บริการข้อมูล SqlClient สุทธิ"
ErrorCode = -2146232060
คลาส = 21
LineNumber = 257
จำนวน = 605
ขั้นตอน = "ispDisplayCount"
เซิร์ฟเวอร์ = "10.10.1.1"
สถานะ = 3

ข้อยกเว้นนี้หมายความว่าอย่างไร มีวิธีแก้ปัญหาสำหรับปัญหาข้างต้นหรือไม่?

แม้ว่าฐานข้อมูลที่อ้างถึงในข้อผิดพลาดข้างต้นระบุว่า tempdb ข้อผิดพลาดที่คล้ายกันที่อ้างอิงข้อความ 605 อาจได้รับการแก้ไขโดยใช้คำตอบด้านล่าง

ข่าวสารเกี่ยวกับ 605 ระดับ 21 สถานะ 3 บรรทัด 1
พยายามดึงหน้าตรรกะ (1: 8687634) ในฐานข้อมูล 7 ล้มเหลว มันเป็นของหน่วยการจัดสรร 72057594364821504 ไม่ใช่เพื่อ 72057594052476928

คำตอบ:


11

หาก ID ฐานข้อมูลที่ระบุโดยข้อความแสดงข้อผิดพลาดคือ2ฐานข้อมูลที่ได้รับผลกระทบคือ tempdb วิธีหนึ่งในการแก้ไขความเสียหายประเภทนี้ใน tempdb ก็คือเริ่มต้นอินสแตนซ์ของ SQL Server ใหม่ สำหรับ ID ฐานข้อมูลอื่นที่ไม่ใช่ 2 ให้ทำตามคำแนะนำด้านล่าง

คุณอาจต้องกู้คืนจากการสำรองข้อมูล แต่ให้ลองทำดังนี้

ในฐานะสมาชิกของบทบาทดูแลระบบดำเนินการDBCC PAGE (2, 5, 65424, 3);และค้นหาMetadata: IndexIdค่า

  • หากเป็น0(ฮีป) หรือ1(ดัชนีคลัสเตอร์) คุณจะต้องกู้คืนจากข้อมูลสำรอง
  • หากไม่ใช่ 0หรือ1คุณสามารถสร้างดัชนีที่ไม่ใช่คลัสเตอร์ใหม่ได้

เรียกใช้คำสั่ง DBCC และแจ้งให้เราทราบสิ่งที่คุณค้นหา ตรวจสอบhttps://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/รายละเอียดเกี่ยวกับDBCC PAGEคำสั่ง


10

ฐานข้อมูลของคุณเสียหาย ใช้เวลาในการกู้คืนจากการสำรองข้อมูลที่ดี หากคุณมีการสำรองข้อมูลไม่ถึงเวลาที่จะเรียนรู้เกี่ยวกับความสำคัญของการทดสอบแผนกู้ของคุณ นอกจากนี้ยังรับประกันการตรวจสอบความน่าเชื่อถือของฮาร์ดแวร์ของคุณเฝ้าดูคำเตือนและข้อผิดพลาดในบันทึกของระบบ


9

ข้อผิดพลาดระบุว่าฐานข้อมูลของคุณเสียหาย ข่าวดีก็คือ ID ฐานข้อมูล 2 ระบุว่านี่คือฐานข้อมูล tempdb ดังนั้นการแก้ไขนี้ง่ายมากเพียงแค่รีสตาร์ทอินสแตนซ์ฐานข้อมูล

เมื่อคุณเริ่มต้นอินสแตนซ์ใหม่คุณควรเข้าใจว่าทำไมความเสียหายจึงเกิดขึ้น เริ่มต้นด้วยการรันchkdskบนไดรฟ์ที่มีปัญหาไฟล์ ถัดไปคุณจะต้องดูที่จัดเก็บข้อมูลและดูว่ามีปัญหาใด ๆ หรือไม่ อาจเป็นปัญหาดิสก์ทางกายภาพอาจเป็นไดรเวอร์ HBA หรือ RAID การ์ด ฯลฯ


คุณพบว่าการตรวจสุขภาพ RAM จะเป็นประโยชน์เช่นกันหรือไม่? คุณเคยเห็นเพจที่เสียหายใน RAM แปลเป็นความเสียหายบนดิสก์หรือไม่
Ali Razeghi

1
หากมี RAM ติดที่ไม่ดีซึ่งอาจทำให้หน้าถูกรายงานว่าสกปรก อัตราต่อรองจะสูงกว่ามากว่ามันเป็นปัญหากับระบบย่อยของดิสก์กว่าหน่วยความจำ นั่นจะเป็นสถานที่ต่อไปที่จะดูว่าแผ่นดิสก์นั้นดีหรือไม่
mrdenny

2

ฉันสามารถแก้ไขปัญหานี้ได้โดยการล้างแคช SQL:

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO

เห็นได้ชัดว่าการเริ่มบริการ SQL ใหม่จะมีผลเช่นเดียวกัน

( ทำโดย SQLทำซ้ำที่นี่เพื่อช่วยเหลือผู้อื่น!)


1

ในกรณีของฉันการตัดและเติมข้อมูลซ้ำในตารางที่เกี่ยวข้องเป็นวิธีแก้ปัญหา

ข้อมูลส่วนใหญ่ในตารางอาจเสียหาย


1

สิ่งที่คุณจะได้ยินจากคนจำนวนมากคือ " ฐานข้อมูลเสียหายคุณต้องกู้คืน " โดยไม่แนะนำให้คุณใช้เวลาสักครู่เพื่อทำสิ่งต่อไปนี้ ตรวจสอบบันทึกของคุณดูว่าปัญหาเกิดขึ้นครั้งแรกเมื่อใดข้อผิดพลาดที่นำหน้าบรรทัดนั้นตรวจสอบฐานข้อมูล / ตารางที่หน้าเป็นของ

ในกรณีของฉันข้อผิดพลาดนี้นำหน้าด้วย;

ไม่สามารถค้นหารายการดัชนีในดัชนี ID 9 ของตาราง 629577281 ในฐานข้อมูล 'XYZ' ดัชนีที่ระบุเสียหายหรือเกิดปัญหากับแผนการอัพเดทปัจจุบัน

วิธีแก้ปัญหาคือการติดตามดัชนีที่อ้างถึงและลบทิ้งชั่วคราว

ฉันพบลิงค์ Microsoft นี้ในภายหลังซึ่งอธิบายปัญหาที่แน่นอนของฉันและเสนอลิงค์โซลูชัน

หวังว่านี่จะช่วยคนอื่นในอนาคต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.