file .ldf เป็นไฟล์ที่แยกเก็บบันทึก transaction
ของไฟล์ฐานข้อมูล (.mdf file) และจำเป็นต้องใช้งานคู่กัน ถ้าหาก transaction log
ไม่สมบูรณ์หรือเราจัดการผิดวิธี sql server จะเรียกใช้งาน database
ก้อนนั้นไม่ได้เลย
ในการติดตั้ง SQL Server ไม่ได้มี options นี้ให้เราเลือก admin หลายคนกด next >> ไปไม่โดยไม่สนใจบางทีก็คิดไปเองว่า การติดตั้ง database ลงในเซอฟเวอร์เป็นหน้าที่ของผู้พ้ฒนาโปรแกรมน่าจะรู้เรื่องมั้ง (พลาดแล้ว..)
1. ตั้งค่า recovery model ของ database เป็น simple เพื่อให้ database หยุดขยายขนาด log แบบไม่มี limit
2. ลดขนาดของ log file (.ldf) ที่เกินจำเป็น
Options A: Shink database
Option B: detach/attach สร้าง .ldf log file ใหม่ *ควรจะทำ full backup ไว้ก่อน
เลือกคลิ้กขวาที่ database > Tasks > Detach...
สรุปว่า นอกจาก Simple Recovery model แล้วจะต้องมี admin คอยทำหน้าที่จัดการ backup log file และ Shrink database เป็นประจำนั่นเอง
แต่ Size ของ *.mdf และ *.ldf จะเปลี่ยนแปลงหรือ date modified ก็ต่อเมื่อ SQL close file หรือขยาย size ของ Database หรือ restart service
อ้างอิง : http://msdn.microsoft.com/en-us/library/ms189573.aspx
สาเหตุที่ไฟล์ .LDF ขนาดใหญ่ขึ้นไม่หยุด
ปกติค่า default ของฐานข้อมูลใน SQL server จะอยู่ใน full recovery mode แปลว่าถ้าเราไม่ทำอะไรซักอย่างกับ database ก้อนนี้ ขนาดของไฟล์ .ldf ก็จะโตขึ้นเรื่อยๆ ทุกวันจนฮาร์ดดิสเต็มในที่สุดในการติดตั้ง SQL Server ไม่ได้มี options นี้ให้เราเลือก admin หลายคนกด next >> ไปไม่โดยไม่สนใจบางทีก็คิดไปเองว่า การติดตั้ง database ลงในเซอฟเวอร์เป็นหน้าที่ของผู้พ้ฒนาโปรแกรมน่าจะรู้เรื่องมั้ง (พลาดแล้ว..)
วิธีแก้ปัญหาขนาดไฟล์ .LDF
1. ตั้งค่า recovery model ของ database เป็น simple เพื่อให้ database หยุดขยายขนาด log แบบไม่มี limit
- ใช้ SQL Server Management Studio login เข้าไปจัดการเซอฟเวอร์ฐานข้อมูล
- ใน Object Explorer browse ไปที่ไฟล์ database ที่ต้องการ Right click > Properties > Options เลือก Rocovery model : Simple
2. ลดขนาดของ log file (.ldf) ที่เกินจำเป็น
Options A: Shink database
- เลือกคลิ้กขวาที่ database > Tasks > Shrink > Files
- File type: Log
- Shrink action : Release unused space
- กด OK
Option B: detach/attach สร้าง .ldf log file ใหม่ *ควรจะทำ full backup ไว้ก่อน
เลือกคลิ้กขวาที่ database > Tasks > Detach...
- ถ้ามีการใช้งาน database นี้อยู่จะมี Active connections ให้ปิดโปรแกรมที่ใช้งานก่อนติ๊กถูกที่ drop connections กด OK
- ลบ หรือ เปลี่ยนชื่อ ไฟล์ ldf เป็นชื่ออื่น
- เลือก Tasks > Attach ไฟล์ .mdf เข้าไปใหม่
Recovery model ใน SQL server database
- Simple recovery model : เมื่อถึงจุด Checkpoint ระบบจะเคลียร์พื้นทีจาก Record แรกสุด - MinLSN เป็นที่ว่างเขียนทับได้
- Full recovery model : records ทั้งหมดจะห้ามเขียนทับจนกว่าเราจะทำ transaction log backup (Manual)
- Bulk-logged recovery model : จะสร้าง Checkpoint ทุกครั้งที่เรา backup log หรือทำ bulk-copy
สรุปว่า นอกจาก Simple Recovery model แล้วจะต้องมี admin คอยทำหน้าที่จัดการ backup log file และ Shrink database เป็นประจำนั่นเอง
แต่ Size ของ *.mdf และ *.ldf จะเปลี่ยนแปลงหรือ date modified ก็ต่อเมื่อ SQL close file หรือขยาย size ของ Database หรือ restart service
อ้างอิง : http://msdn.microsoft.com/en-us/library/ms189573.aspx
ไม่มีความคิดเห็น:
แสดงความคิดเห็น