07 มีนาคม 2561

SQL Server - Clear Transaction Log

Transaction Log คือ ข้อมูลที่เกิดขึ้นจากการบันทึกการทำงานทั้งหมดของฐานข้อมูล โดยจะเกิดขึ้นเมื่อเรากำหนดรูปแบบการกู้คืนข้อมูล (Recover Model) เป็นแบบ full หรือ bulk operation ซึ่งกำหนดในระหว่างที่เราสร้างฐานข้อมูล หรือถ้าเป็นฐานข้อมูลเดิมก็เข้าไปแก้ไขรูปแบบได้โดยคลิกขวาที่ฐานข้อมูล แล้วเลือกรายการ Properties ดังภาพ

จะปรากฎหน้าต่าง Database Properties ขึ้นมาก ให้เลือกรายการ Options จะปรากฏรายละเอียดดังภาพ

สามารถกำหนดรูปแบบการกู้คืนได้ตามต้องการ ปกติถ้าเป็นฐานข้อมูลที่ใช้งานจะกำหนด Recovery Mode เป็นแบบ Full ซึ่งรูปแบบนี้จะทำให้ทุกครั้งที่มีการกระทำกับฐานข้อมูลเมื่อมีการสั่งงานคำสั่ง เช่น  INSERT UPDATE DELETE หรือ SELECT เป็นต้น ทุกคำสั่งที่สั่งงานก็จะมีการเก็บ LOG ไว้ภายใต้ไฟล์ Transaction Log ทำให้เมื่อใช้งานไปนานวัน ก็จะทำให้ไฟล์ Transaction มีขนาดใหญ่มาก กินพื้นที่ของฮาร์ดดิสก์เป็นจำนวนมาก แต่ถ้าเราทำการเคลียร์ข้อมูลของ Transaction Log ออกไปก็จะทำให้ไม่สามารถกู้คืนข้อมูลในช่วงเวลาที่ทำการเก็บ Transaction Log นั้นได้อีก **  ดังนั้น  ก่อนจะทำการเคลียร์ Transaction Log ให้ทำการ Backup แบบ Full Backup ข้อมูลเก็บไว้ก่อน เมื่อทำการ Backup แล้วก็ทำการเคลียร์เพื่อเพิ่มพื้นที่ได้ตามต้องการ

สำหรับวิธีการเคลียร์ Transaction Log สามารถทำได้โดยใช้คำสั่ง ดังนี้

สำหรับ SQL Server 2005 หรือเก่ากว่า

BACKUP LOG ชื่อฐานข้อมูล WITH TRUNCATE_ONLY
BACKUP LOG ชื่อฐานข้อมูล WITH NO_LOG

ทั้ง 2 คำสั่งทำหน้าที่เหมือนกัน คำสั่ง WITH NO_LOG ใช้ในกรณีที่เราไม่สามารถใช้ TRUNCATE_ONLY ได้ ดังนั้น ก็สั่งได้ทั้ง 2 คำสั่งได้เลย

แล้วทำการลดขนาดของไฟล์ Transaction Log ให้เหลือน้อยๆ เช่น เหลือ 1 MB

DBCC SHRINKFILE (ชื่อฐานข้อมูล_log, 1)

สำหรับ SQL Server 2008 ขึ้นไป

สำหรับชื่อฐานข้อมูล ให้เติม    _log  ต่อท้ายด้วย

DBCC SHRINKFILE (N'ชื่อฐานข้อมูล_log' , 0, TRUNCATEONLY)
DBCC SHRINKFILE (N'ชื่อฐานข้อมูล_log' , 1)


สวัสดีมีพื้นที่เหลือใช้
อย่าลืม BACKUP ข้อมูลก่อนน่ะครับ

1 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

very good

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.