[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 Bacckup ก่อนนะ)
      • เข้าไปที่ 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 to your email.