Chia Sẽ Kinh Nghiệm Về IT



Tìm Kiếm Với Google
-


Gởi Ðề Tài Mới  Gửi trả lời
 
Công Cụ Xếp Bài
Tuổi 14-09-2015, 05:19 PM   #1
hoctinhoc
Guest
 
Trả Lời: n/a
Hướng dẫn cách Giảm Bớt Dung Lượng File LOG Của SQL Server 2014
Hướng dẫn cách Giảm Bớt Dung Lượng File LOG Của SQL Server 2014

Guess Post: Vũ Minh Tâm

Vào một ngày đẹp trời, bạn nhận thấy rằng file LOG của mình quá lớn, chiếm gần hết ổ cứng và không thể thực hiện bất kì một thao tác nào trên dữ liệu.


Hay bạn thấy, trong khi dữ liệu của mình chỉ có vài GB, mà file LOG lên đến tận hàng trăm GB.
Phải làm thế nào ?


Có rất nhiều cách để giải quyết vấn đề này

Đối với DB lớn vài TB or vài trăm GB thì nên Stop DB này trước khi Detach

- Detach DB, xóa file LOG, sau đấy ATTACH lại DB


Khi Attach DB vào thì bạn sẽ thấy báo lỗi File Log không tìm thấy (not found)

Bạn chỉ cần bấm vào link của file Log và chọn Remove là xong rồi bấm Ok là xong.

Microsoft Management Studio sẽ tạo lại file Log mới





- Backup LOG với OpTION là TRUNCATE_ONLY hoặc NO_LOG
Với phiên bản SQL Server 2008 thì đã bỏ Option này


SQL Server 2005 Books Online:


“[TRUNCATE_ONLY]


This option will be removed in a future version of SQL Server. Avoid using it in new development work, and plan to modify applications that currently use it.



We recommend that you never use NO_LOG or TRUNCATE_ONLY to manually truncate the transaction log…”.
Tôi thường dùng cách thứ 3.


Giả sử DB của tôi là Test.


File Data : Test_Data.MDF
File Log : Test_Log.LDF


Mã PHP:
  USE Test;
 
GO
   
-- Truncate the log by changing the database recovery model to SIMPLE
ALTER DATABASE Test
 SET RECOVERY SIMPLE
;
 
GO
 
-- Shrink the truncated log file to 1 MB.
 
DBCC SHRINKFILE (Test_Log1);
 
GO
 
-- Reset the database recovery model.
 
ALTER DATABASE Test
 SET RECOVERY FULL
;
GO 
</div></div> Giải thích
- Có 3 chế độ Recovery trong SQL Server , FULL, SIMPLE và BULK LOGGED
Chế độ mặc định là FULL.


Bạn có thể vào phần Option của DB, xem trong Recovery Model.
Khi ở chế độ này, bất kì một transaction nào, kể cả khi đã commit cũng đều được lưu trong LOG, do đó có thể dựa vào những transaction này để “quay lui (rollback)” DB về bất kì thời điểm nào. Vì thế với những DB có Transaction nhiều, DATA ít thì file LOG vẫn có thể rất lớn.


- Đầu tiên SET RECOVERY của DB về SIMPLE, ở chế độ này, sau khi transaction được COMMIT, sẽ tự động xóa. Do vậy File LOG của DB ở chế độ này thường rất nhỏ.


- Dùng DBCC SHRINKFILE để SHRINK file log xuống còn 1 Mb
Nếu không set Recovery về SIMPLE, thì sẽ ko thể xóa bỏ hết các transaction đã được COMMIT.
SHRINKFILE chỉ thu dọn và sắp xếp và phân bố lại dữ liệu, bỏ các vùng trống để giải phóng bộ nhớ, chứ không phải xóa dữ liệu. Vì thế ở chế độ FULL, SHRINKFILE hầu như ko tác dụng, hoặc nếu có thì file LOG dung lượng giảm đi ko đáng kể.


- Sau đó SET RECOVERY về lại FULL


Trên MSDN cũng khuyên nếu muốn Backup LOG, các bạn nên chuyển về chế độ SIMPLE, hơn là backup LOG với Truncate_Only và No_LOG


* Chú ý: Với những DB lớn, có kế hoạch Backup riêng, bạn cần hỏi ý kiến của DBA trước khi thực hiện. Vì một vài chế độ BackUp dựa rất nhiều vào file LOG.


Tuy nhiên nếu có DBA, thì không bao giờ để xảy ra trường hợp này, vì công việc của họ là thường xuyên theo dõi, giám sát và xử lý để Server hoạt động tốt.

Tham khảo:

http://www.sqlviet.com/blog/lam-sao-...cua-sql-server

http://cpanel.vn/2011/07/21/server/database-server/mssql/how-to-truncate-log-file-in-sql-server-2005-giam-dung-luong-log-file-trong-sql-server-2005




  Trả lời ngay kèm theo trích dẫn này
Gửi trả lời



Quyền Hạn Của Bạn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Hình Cảm xúc đang Mở
[IMG] đang Mở
Mã HTML đang Tắt




Bây giờ là 12:43 PM. Giờ GMT +7



Diễn đàn tin học QuantriNet
quantrinet.com | quantrimang.co.cc
Founded by Trương Văn Phương | Developed by QuantriNet's members.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.