[MSSQL] แก้ปัญหา Database Log File โตไม่หยุด

หลายๆพอใช้ Database ไป ผ่านไปนานเข้า ระบบฟ้องว่า Disk เต็ม พอเข้าไปดูอ้าวไฟล์ Log (.ldf) มันโตกว่าไฟล์ Database (.mdf) เสียอีก คราวนี้มาลองดูสาเหตุกัน

สาเหตุที่เป็นไปได้

  • เลือก Recovery Model ที่ไม่เหมาะสม
  • ไม่มีการจัดเก็บ Backup Log ออกมา พอไปตั้งให้ Log มัน Auto Grow แล้วมันเลยบวมครับ

พอรู้สาเหตุแล้ว มาดูวิธีแก้บ้าง

📢 ปรับเปลี่ยนเลือก Recovery Mode ที่ใช้ครับ

ลองพิจารณา Recovery Model จาก Blog ผม หรือจะถาม Google ก็ได้ครับ เมื่อได้ Recovery Model ที่ใช่แล้ว มาดูวิธีขั้นตอนการปรับแก้ครับ

  • เข้าไปที่ SQL Server Management Studio (SSMS) อย่างน้อยเป็น Windows Authentication หรือใช้ User ที่มีสิทธินการจัดการ DB ครับ
  • ในหน้าจอ Object Explorer browse เลือก Database
  • คลิกขวาที่ Database ที่เลือก >> Properties >> Options
  • หาในส่วนของ Recovery Model เลือกให้เหมาะสมกับการใช้งาน
  • กด OK
📢 ลดขนาดของ Database Log File (.ldf)
  • Shrink Database ตามวิธีการ
    • เข้าไปที่ SQL Server Management Studio (SSMS)
    • ในหน้าจอ Object Explorer browse เลือก Database
    • คลิกขวาที่ Database ที่เลือก Tasks >> Shrink >> Files
    • ดู File Type = Log
    • Shrink action ดูว่่าให้ DB มัน คืนพื้นที่ที่ไม่ได้ใช้ (Release unused space)
    • กด OK
  • Detach/Attach (ควรทำ Full Backup ก่อนนะ)
    • เข้าไปที่ SQL Server Management Studio (SSMS)
    • ในหน้าจอ Object Explorer browse เลือก Database
    • คลิกขวาที่ Database ที่เลือก Tasks >> Detach
    • ถ้ายังมี Application หรือ User ใช้งาน Database ก้อนนี้ออยู่ มันมีหน้าจอให้เตะ (Drop Connection) ครับ
    • ลบ หรือ เปลี่ยนชื่อ ไฟล์ .ldf เป็นชื่ออื่น
    • Attach Database (.mdf) กลับเข้าไปใหม่ โดยคลิกขวาที่ Database ที่เลือก Tasks >> Attach
  • Manual Log Backup
    • เข้าไปที่ SQL Server Management Studio (SSMS)
    • ในหน้าจอ Object Explorer browse เลือก Database
    • คลิกขวาที่ Database ที่เลือก Tasks >> Backup หน้าจอ Backup แสดงขึ้นมา
    • ตรวจสอบชื่อ Database (จะเปลี่ยนเป็นก้อนอื่นก็ได้นะ)
    • ตรวจสอบ Recovery model
    • Backup type เลือก Transaction Log ส่วนของ Option มีหลายแบบครับ เช่น Full(ทั้งหมด), Difference(เอาเฉพาะส่วนที่เปลี่ยนแปลง) เป็นต้น
    • จากนั้นเป็นการใส่ข้อมูลทั้งไป เช่น พวกชื่อ Backup / คำอธิบาย และมีการ Config ด้าน Security
    • เลือก Destination
    • รอ Vertify
    • จากนั้นกำหนด Config ของ Transaction Log ว่าให้ตัด Truncate Log หลัง Backup ไหม
    • มีหน้าจอถามไปอีก จากนั้นรอครับ

ในทีสุดเขียน Blog ที่ดองมา 3 ปีเสร็จ ช่วงนี้ยังมีเวลาว่างๆ ผมพยายามเก็บ Blog เก่าๆที่เขียนค้างไว้ หรือเขียน Blog ใหม่ไปเรื่อยๆ ครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.