การกู้คืนจากบันทึกธุรกรรมเต็มในฐานข้อมูล SQL Server

บทนำ

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

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

ลดขนาดบันทึกธุรกรรม

ในการกู้คืนจากสถานการณ์ที่บันทึกธุรกรรมเต็ม คุณต้องลดขนาดของบันทึกธุรกรรม ในการดำเนินการนี้ คุณต้องตัดทอนธุรกรรมที่ไม่ได้ใช้งานในบันทึกธุรกรรมของคุณและลดขนาดบันทึกธุรกรรม

หมายเหตุ บันทึกธุรกรรมมีความสำคัญมากต่อการรักษาความสมบูรณ์ทางธุรกรรมของฐานข้อมูล ดังนั้น คุณจะต้องลบแฟ้มบันทึกธุรกรรมตั้งแต่หลังจากที่คุณสำรองข้อมูลของฐานข้อมูลของคุณและบันทึกธุรกรรมแล้ว


หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการลดขนาดบันทึกธุรกรรม ไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:

ตัดทอนธุรกรรมที่ไม่ได้ใช้งานในบันทึกธุรกรรมของคุณ

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่คุณต้องพิจารณาเมื่อสำรองข้อมูลบันทึกธุรกรรมและปัญหาที่คุณต้องพิจารณาเมื่อคืนค่าการสำรองข้อมูลบันทึกธุรกรรม ให้ไปที่หัวข้อต่อไปนี้ใน SQL Server Books Online:
  • การสำรองข้อมูลบันทึกธุรกรรม
  • การสำรองข้อมูลบันทึกธุรกรรมและการคืนค่า
คุณยังสามารถลบธุรกรรมที่ไม่ได้ใช้งานจากแฟ้มบันทึกธุรกรรมโดยใช้วิธีการ ตัดทอน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตัดทอนบันทึกธุรกรรม อ่านหัวข้อ "การตัดทอนบันทึกธุรกรรม" ใน SQL Server Books Online

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

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

62866 เหตุผลที่บันทึกธุรกรรม SQL ไม่ถูกตัดทอน

ลดขนาดแฟ้มบันทึกธุรกรรม

การดำเนินการสำรองข้อมูลหรือวิธีการตัดทอนไม่ได้ทำให้ขนาดของแฟ้มบันทึกลดลง หากต้องการลดขนาดของแฟ้มบันทึกธุรกรรม คุณจะต้องทำให้ขนาดของแฟ้มบันทึกธุรกรรมเล็กลง ในการลดขนาดของแฟ้มบันทึกให้มีขนาดตามที่ขอและลบหน้าที่ไม่ใช้ออก คุณต้องใช้การดำเนินการ DBCC SHRINKFILE คำสั่ง DBCC SHRINKFILE Transact-SQL สามารถเพียงแค่ลดขนาดของส่วนที่ไม่ได้ใช้งานภายในแฟ้มบันทึก

หมายเหตุ คำสั่ง DBCC SHRINKFILE Transact-SQL ไม่สามารถตัดทอนบันทึกและลดขนาดเนื้อที่ที่ใช้แล้วภายในแฟ้มบันทึกได้ด้วยตัวเอง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการลดขนาดแฟ้มบันทึก โปรดอ่านหัวข้อต่อไปนี้ใน SQL Server Books Online:
  • การลดขนาดแฟ้มบันทึก
  • DBCC SHRINKFILE
สำหรับข้อมูลเพิ่มเิติมเกี่ยวกับวิธีการลดขนาดแฟ้มบันทึกใน SQL Server 2000 คลิกที่หมายเลขบทความต่อไปนี้ เพื่ออ่านบทความในฐานความรู้ของ Microsoft:

272318 การลดขนาดแฟ้มบันทึกใน SQL Server 2000 ด้วย DBCC SHRINKFILE

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

814574 PRB: ข้อความแสดงข้อผิดพลาด: "ไม่สามารถลดขนาดแฟ้มบันทึก ..." เกิดขึ้นเมื่อคุณลดขนาดแฟ้มบันทึกธุรกรรม (ซึ่งอาจจะเป็นภาษาอังกฤษ)
324432 PRB: คำสั่ง DBCC SHRINKFILE และ SHRINKDATABASE อาจไม่ได้ผลเนื่องจากข้อความถูกสร้างขึ้นอย่างกระจัดกระจาย, ntext หรือคอลัมน์รูป


ป้องกันแฟ้มบันทึกธุรกรรมไม่ให้ขยายโดยไม่คาดคิด

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

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

    315512 ข้อควรพิจารณาสำหรับการกำหนดค่าขยายอัตโนมัติและลดขนาดอัตโนมัติ

  • เปลี่ยนแปลงกู้คืนโมเดล หากเกิดความเสียหายหรือข้อมูลเสียหาย คุณต้องกู้คืนฐานข้อมูลของคุณ เพื่อรักษาไว้ซึ่งความสอดคล้องของข้อมูลและความสมบูรณ์ทางธุรกรรมของฐานข้อมูล คุณสามารถใช้หนึ่งในกู้คืนโมเดลต่อไปนี้ในการกำหนดวิธีการสำรองข้อมูลของคุณและความเสี่ยงต่อการสูญเสียข้อมูลของคุณ ทั้งนี้โดยพิจารณาจากความสำคัญของข้อมูลในฐานข้อมูลของคุณ:
    • กู้คืนโมเดลแบบง่าย
    • กู้คืนโมเดลแบบเต็ม
    • กู้คืนโมเดลแบบบันทึกจำนวนมาก
    เมื่อใช้กู้คืนโมเดลแบบง่าย คุณจะสามารถกู้คืนฐานข้อมูลของคุณไปยังการสำรองข้อมูลล่าสุดของฐานข้อมูลของคุณ เมื่อใช้กู้คืนโมเดลแบบเต็มหรือกู้คืนโมเดลแบบบันทึกจำนวนมาก คุณจะสามารถกู้คืนฐานข้อมูลของคุณไปยัง ณ จุดเมื่อเกิดความล้มเหลว โดยการคืนค่าฐานข้อมูลของคุณที่มีการสำรองข้อมูลแฟ้มบันทึกธุรกรรม

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

    คุณสามารถเปลี่ยนแปลงกู้คืนโมเดลจากแบบเต็มเป็นแบบง่ายได้ หากคุณไม่ต้องการใช้แฟ้มบันทึกธุรกรรมในระหว่างการดำเนินการกู้คืนความเสียหาย
  • สำรองข้อมูลแฟ้มบันทึกธุรกรรมเป็นประจำเพื่อลบธุรกรรมที่ไม่ได้ใช้งานในบันทึกธุรกรรมของคุณออก
  • ออกแบบธุรกรรมให้มีขนาดเล็ก
  • ตรวจสอบว่าไม่มีธุรกรรมใดที่ยังไม่ไ้ด้รับการยอมรับทำงานอยู่โดยไม่จำกัดเวลา
  • กำหนดเวลาให้ตัวเลือก อัพเดตสถิติ ดำเนินการทุกวัน
  • ในการจัดเรียงข้อมูลดัชนีเพื่อให้เป็นประโยชน์ต่อประสิทธิภาพของปริมาณงานในสภาพแวดล้อมสำหรับการผลิตของคุณ ให้ใช้คำสั่ง DBCC INDEXDEFRAG Transact-SQL แทนที่จะใช้คำสั่ง DBCC DBREINDEX Transact-SQL หากคุณเรียกใช้คำสั่ง DBCC DBREINDEX บันทึกธุรกรรมอาจขยายอย่างมากเมื่อฐานข้อมูล SQL Server ของคุณอยู่ในโหมดกู้คืนโมเดลแบบเต็ม นอกจากนี้ คำสั่ง DBCC INDEXDEGRAG ยังไม่เก็บบันทึกข้อมูลไว้เป็นเวลานาน ซึ่งต่างจากคำสั่ง DBCC DBREINDEX

    สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดเรียงข้อมูลดัชนีใน SQL Server 2000 อ่านในเว็บไซต์ของ Microsoft ต่อไปนี้: หากคุณต้องเรียกใช้คำสั่ง DBCC DBREINDEX ในฐานะที่เป็นงานซึ่งเป็นส่วนหนึ่งของแผนการบำรุงรักษาฐานข้อมูล คุณต้องแยกย่อยงานให้เป็นหลายๆ ชิ้นงาน นอกจากนี้ คุณต้องทำการสำรองข้อมูลบ่อยๆ สำหรับบันทึกธุรกรรมระหว่างทำงานต่างๆ

ข้อมูลเพิ่มเติมเกี่ยวกับแฟ้มบันทึกธุรกรรม

ใน SQL Server 2000 และใน SQL Server 2005 แต่ละฐานข้อมูลจะมีอย่างน้อยหนึ่งแฟ้มข้อมูลและหนึ่งแฟ้มบันทึกธุรกรรม SQL Server ทำหน้าที่จัดเก็บข้อมูลทางกายภาพในแฟ้มข้อมูล แฟ้มบันทึกธุรกรรมทำหน้าที่จัดเก็บรายละเอียดของการแก้ไขทั้งหมดที่คุณดำเนินการบนฐานข้อมูล SQL Server ของคุณ และรายละเอียดของธุรกรรมที่ทำแต่ละการแก้ไข เนื่องจากความสมบูรณ์ทางธุรกรรมได้รับการพิจารณาว่าเป็นลักษณะพื้นฐานและลักษณะภายในของ SQL Server ดังนั้น การบันทึกรายละเอียดของธุรกรรมจึงไม่สามารถปิดได้ใน SQL Server

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

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

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

317375 บันทึกธุรกรรมขยายโดยไม่คาดคิดหรือเต็มบน SQL Server


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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแก้ปัญหาความต้องการเนื้อที่บนดิสก์เพิ่มเติมในระหว่างกระบวนการกู้คืน โปรดอ่านหัวข้อ "เนื้อที่บนดิสก์ไม่เพียงพอ" ใน SQL Server Books Online สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสถาปัตยกรรมแฟ้มบันทึกธุรกรรม โปรดอ่านหัวข้อต่อไปนี้ใน SQL Server Books Online:
  • สถาปัตยกรรมบันทึกธุรกรรม
  • สถาปัตยกรรมเชิงตรรกะของบันทึกธุรกรรม
  • สถาปัตยกรรมทางกายภาพของบันทึกธุรกรรม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกู้คืนโมเดลใน SQL Server 2000 อ่านหัวข้อดังต่อไปนี้ใน SQL Server Books Online:
  • การเลือกกู้คืนโมเดล
  • การกู้คืนแบบง่าย
  • การกู้คืนแบบเต็ม
  • การกู้คืนแบบบันทึกจำนวนมาก
  • การเปลี่ยนกู้คืนโมเดล

คุณสมบัติ

รหัสบทความ: 873235 - การตรวจสอบครั้งสุดท้าย: 29 ก.พ. 2012 - ฉบับแก้ไข: 1

คำติชม