การกู้คืนฐานข้อมูล SQL จากการสำรองข้อมูลจะสร้างตารางและดัชนีใหม่จากศูนย์หรือไม่ หรือมันเก็บไว้ในลำดับทางกายภาพภายในเดียวกันในเวลาของการสำรองข้อมูลหรือไม่
เรากำลังใช้ SQL 2000 กับการสำรองข้อมูลที่บีบอัด Quest Lightspeed หากนั่นสร้างความแตกต่าง
การกู้คืนฐานข้อมูล SQL จากการสำรองข้อมูลจะสร้างตารางและดัชนีใหม่จากศูนย์หรือไม่ หรือมันเก็บไว้ในลำดับทางกายภาพภายในเดียวกันในเวลาของการสำรองข้อมูลหรือไม่
เรากำลังใช้ SQL 2000 กับการสำรองข้อมูลที่บีบอัด Quest Lightspeed หากนั่นสร้างความแตกต่าง
คำตอบ:
คำตอบคือไม่สำหรับซอฟต์แวร์สำรองที่ใช้
การสำรองข้อมูลเป็นการดำเนินการทางกายภาพไม่ใช่การดำเนินการทางตรรกะ มันจะอ่านขอบเขตทั้งหมดที่มีหน้าที่ปันส่วน (เช่นแม้ว่าจะมีเพียงหน้าเดียวจากขอบเขต 8 หน้าที่ถูกจัดสรรก็จะสำรองข้อมูลขอบเขต 64K ทั้งหมด) และทำตามลำดับจริง
การคืนค่าเป็นการดำเนินการทางกายภาพไม่ใช่การดำเนินการทางตรรกะ มันวางขอบเขตในตำแหน่งที่ถูกต้องในไฟล์ข้อมูล
การสร้างดัชนีขึ้นใหม่ (หรืออะไรทำนองนั้น) เป็นการดำเนินการทางตรรกะซึ่งต้องบันทึกไว้ การสำรองและกู้คืนจัดการกับไฟล์ข้อมูลโดยตรงโดยไม่ต้องผ่านบัฟเฟอร์พูลซึ่งเป็นสาเหตุหนึ่งที่ทำให้ไม่สามารถทำได้ อีกเหตุผลหนึ่งที่ทำให้ไม่สามารถทำได้คือการสำรองข้อมูลและคืนค่าไม่มีความเข้าใจในสิ่งที่มีอยู่ในข้อมูลที่กำลังสำรอง
สาเหตุหลักที่ทำให้สิ่งนี้ไม่สามารถทำได้คือการย้ายหน้าไปรอบ ๆ ระหว่างการดำเนินการกู้คืนจะทำให้พอยน์เตอร์พอยน์ทรีเสียหาย หากหน้า A ชี้ไปที่หน้า B แต่หน้า A ถูกย้ายโดยกระบวนการกู้คืนหน้า B จะได้รับการปรับปรุงอย่างไรให้ชี้ไปที่หน้า A หากอัปเดตทันทีอาจถูกเขียนทับโดยกระบวนการกู้คืนที่เหลือ หากมีการปรับปรุงที่เลื่อนออกไปจะเกิดอะไรขึ้นหากกระบวนการกู้คืนกู้คืนบันทึกธุรกรรมบางอย่างที่ลบหน้า A หรือหน้า B มันไม่สามารถทำได้
Bottom line - การสำรองและกู้คืนเป็นการดำเนินการทางกายภาพที่ไม่เปลี่ยนแปลงข้อมูล
หวังว่านี่จะช่วยได้!
PS แม้ว่าจะไม่ได้อยู่ตรงคำถามนี้ตรวจสอบบทความที่ผมเขียนให้นิตยสารกรกฎาคม TechNet ซึ่งจะอธิบายวิธีการสำรองข้อมูลต่างๆทำงานภายใน: การสำรองข้อมูลเซิร์ฟเวอร์ SQL เข้าใจ นิตยสารเดือนกันยายนจะมีข่าวต่อไปในซีรีส์เรื่องความเข้าใจในการฟื้นฟู
การสำรองข้อมูล SQL ดั้งเดิมเป็นเพียงการถ่ายโอนข้อมูลไฟล์สำรองแบบทีละหน้าดังนั้นคำตอบคือ "ไม่" การสำรองข้อมูล Lightspeed ของ Quest น่าจะใช้อัลกอริธึมการบีบอัดข้อมูลบางประเภท แต่ก็ยังไม่ "สร้าง" ไฟล์ข้อมูลหรือดัชนีใหม่ซึ่งจะใช้เวลานานมากในฐานข้อมูลขนาดใหญ่
ทำการสำรองข้อมูลเป็นประจำและบ่อยครั้งมาก (ฉันหวังว่า) ดังนั้นนักออกแบบทำให้แน่ใจว่าการสำรองข้อมูลนั้นรวดเร็วที่สุด I / O ที่เร็วที่สุดคืออะไร ลำดับ คุณอ่านบล็อกจากดิสก์ตามลำดับจริงคุณมีประสิทธิภาพที่ดีที่สุด
ทำไมบนโลกควรฐานข้อมูลดำเนินการสุ่ม I / O ที่ยุ่งยากทุกคืนเดียว , การกำจัดหัวของดิสก์ทั่วสถานที่? ความแตกต่างจะอยู่ที่คำสั่งสองขนาด ไม่มีสิ่งที่เป็นไปได้ในเรื่องนี้
อืมม BradC คุณเคยทำงานกับ Firebird / Interbase มาก่อนหรือไม่ซึ่งการแบ็คอัพหลัก / การคืนค่ายูทิลิตี้ / API นั้นเหมือนกับ "คัดลอกฐานข้อมูล ... " ของ SSMS / EM หรือไม่ ถ้าเป็นเช่นนั้นรู้ว่า MS SQL Server ไม่ชอบ
การสำรองข้อมูล SQLServer เป็นดัมพ์ฐานข้อมูลที่ถูกกู้คืน "ตามที่เป็นจริง" - ดังนั้นจึงเป็นเหมือนทางลัดออนไลน์ที่สะดวกสบายสำหรับการดำเนินการ "detach-copy-reattach on place" ฐานข้อมูลที่กู้คืนเกือบจะเป็นสำเนาที่ถูกต้องของไฟล์ฐานข้อมูลต้นฉบับ (เกือบเป็นเพราะคุณสามารถเปลี่ยนตำแหน่งของไฟล์ฐานข้อมูลของฐานข้อมูลที่เรียกคืน) ...