XÓA FILE LOG CỦA SQL ĐỂ GIÚP DATABASE NHẸ HƠN

  -  
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.

Bạn đang xem: Xóa file log của sql để giúp database nhẹ hơn

Bạn đang xem: Xóa file log của sql để giúp database nhẹ hơn


*

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 ?- Detach DB, xóa file LOG, sau đấy ATTACH lại DBTuy nhiên với CSDL đòi hỏi tính sẵn sàng cao, thì ko mấy ai cho phép bạn làm điều này.- Backup LOG với OpTION là TRUNCATE_ONLY hoặc NO_LOGVới phiên bản SQL Server 2008 thì đã bỏ Option nàyThis 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…”.Khi bạn đã chỉnh chế độ về SIMPLE, tức là các transaction đã lưu trong LOG không còn giá trị nữa, bạn có thể xóa đi thoải mái, tương tự như dữ liệu trên đĩa của bạn không cần thiết, bạn có thể format lại ổ đĩa.-----Bài viết này thảo luận ba phương pháp mà bạn có thể sử dụng để thu hẹp cơ sở dữ liệutempdbđến kích thước nhỏ hơn kích thước được cấu hình sau cùng. Phương pháp thứ nhất cho phép bạn kiểm soát hoàn toàn kích thước của các tệptempdbnhưng yêu cầu bạn phải khởi động lại SQL Server. Phương pháp thứ hai thu hẹp toàn bộtempdb, có một số hạn chế, có thể bao gồm việc khởi động lại SQL Server. Phương pháp thứ ba cho phép bạn thu hẹp các tệp rieng lẻ trongtempdb. Hai phương pháp sau cùng yêu cầu rằng không được có hoạt động nào xảy ra trong cơ sở dữ liệutempdbtrong quá trình hoạt động thu hẹp.Chú ýNếu bạn đang sử dụng SQL Server 2005, bạn cũng có thể áp dụng những phương pháp này. Tuy nhiên, bạn nên sử dụng SQL Server Management Studio thay vì Enterprise Manager và Query Analyzer để tiến hành những hoạt động này. Chú ý thêm rằng SQL Server management studio trong phiên bản 2005 không cho biết kích thước chính xác của các tệp tempdb sau hoạt động thu hẹp. Giá trị "Không gian được phân bổ hiện tại’ luôn được lấy từ sys.master_files DMV và giá trị này không được cập nhật sau khi xảy ra hoạt động thu hẹp cho cơ sở dữ liệu tempdb. Để tìm kích cỡ chính xác của các tệp tempdb sau hoạt động thu hẹp, hãy thực thi lệnh sau trong management studio:use tempdbchọn (size*8) làm FileSizeKB từ sys.database_filesChú ýSQL Server 2008 không bị ảnh hưởng bởi sự cố này (GUI hiển thị kích thước không chính xác.)Quay lại đầu trang

Thông tin Tempdb

Tempdblà không gian làm việc tạm thời. Cùng với các ứng dụng khác, SQL Server sử dụngtempdbcho:Lưu trữ các bảng tạm thời được tạo rõ ràng.Các bảng làm việc lưu gữ kết quả trung gian được tạo ra trong quá trình xử lý và sắp xếp truy vấn.Con trỏ tĩnh được cụ thể hoá.SQL Server ghi lại đủ thông tin trong nhật ký giao dịch tempdb để quay lại một giao dịch nhưng không thực hiện lại giao dịch trong quá trình truy vấn cơ sở dữ liệu. Tính năng này làm tăng hiệu suất của câu lệnh INSERT trong tempdb. Ngoài ra, không cần ghi nhật ký thông tin để thực hiện lại bất kỳ giao dịch nào vì tempdb được tạo lại mỗi lần bạn khởi động lại SQL Server; do đó, không có bất kỳ giao dịch nào để chuyển đến hoặc quay lại. Khi SQL Server khởi động, tempdb được tạo lại bằng cách sử dụng bản sao của cơ sở dữ liệu mẫu và được thiết lập lại về kích thước được cấu hình sau cùng.Theo mặc định, cơ sở dữ liệu tempdb được cấu hình để tự phát triển khi cần; do đó, cơ sở dữ liệu này có thể phát triển theo thời gian đến kích thước lớn hơn mong muốn. Việc khởi động đơn giản SQL Server thiết lập lại kích thước của tempdb về kích thước được cấu hình sau cùng. Kích thước được cấu hình là kích thước rõ ràng sau cùng được thiết lập bằng hoạt động thay đổi kích thước tệp như ALTER DATABASE với tuỳ chọn MODIFY FILE hoặc câu lệnh DBCC SHRINKFILE. Bài viết này trình bày ba phương pháp mà bạn có thể sử dụng để thu hẹp tempdb đến kích thước nhỏ hơn kích thước được cấu hình.Quay lại đầu trang

Phương pháp 1 để Thu hẹp Tempdb

Phương pháp này yêu cầu bạn khởi động lại SQL Server.Dừng SQL Server. Mở dấu nhắc lệnh, rồi khởi động SQL Server bằng cách nhập lệnh sau:sqlservr -c -fTham số-cvà-fkhiến SQL Server khởi động trong chế độ cấu hình tối thiểu với kích thướctempdbbằng 1 MB cho tệp dữ liệu và 0,5 MB cho tệp nhật ký.

Xem thêm: Những Điều Cần Làm Sau Khi Cài Win 10, Những Việc Cần Làm Sau Khi Cài Đặt Windows 10

CHÚ Ý: Nếu bạn sử dụng SQL Server có tên như ví dụ, bạn phải thay đổi thành thư mục phù hợp (Program Files\Microsoft SQL Server\MSSQL$instance name\Binn) và sử dụng khoá chuyển đổi-s(-s%instance_name%).Kết nối đến SQL Server bằng Query Analyzer, rồi chạy lệnh Transact-SQL sau: ALTER DATABASE tempdb MODIFY FILE (NAME = "tempdev", SIZE = target_size_in_MB) --Kích thước mục tiêu mong muốn cho tệp dữ liệu ALTER DATABASE tempdb MODIFY FILE (NAME = "templog", SIZE = target_size_in_MB) --Kích thước mục tiêu mong muốn cho tệp nhật ký Dừng SQL Server bằng cách nhấnCtrl-Ctại cửa sổ dấu nhắc lệnh, khởi động lại SQL Server như một dịch vụ, rồi xác thực kích thước của các tệp Tempdb.mdf và Templog.ldf.Một hạn chế của phương pháp này là chỉ hoạt động trên các tệp logictempdbmặc định,tempdevvàtemplog. Nếu các tệp bổ sung được thêm vàotempdb, bạn có thể thu hẹp chúng sau khi khởi động lại SQL Server như một dịch vụ. Tất cả các tệptempdbđều được tạo lại trong khi khởi động; do đó, các tệp đều trống và có thể xoá được. Để xoá các tệp bổ sung trongtempdb, hãy sử dụng lệnh ALTER DATABASE với tuỳ chọn REMOVE FILE.Quay lại đầu trang

Phương pháp 2 để Thu hẹp Tempdb

Sử dụng lệnh DBCC SHRINKDATABASE để thu hẹp toàn bộ cơ sở dữ liệutempdb. DBCC SHRINKDATABASE nhận được tham sốtarget_percent, là phần trăm không gian trống mong muốn còn lại trong tệp cơ sở dữ liệu sau khi cơ sở dữ liệu được thu hẹp. Nếu bạn sử dụng DBCC SHRINKDATABASE, bạn có thể phải khởi động lại SQL Server.

Xem thêm: Tuyển Dụng Nhân Viên Sale Tại Thành Phố Hồ Chí Minh, Tìm Việc Làm Sale Online

QUAN TRỌNG: Nếu bạn chạy DBCC SHRINKDATABASE, không có hoạt động nào khác có thể xảy ra với cơ sở dữ liệutempdb. Để đảm bảo rằng các quá trình khác không thể sử dụngtempdbtrong khi chạy DBCC SHRINKDATABASE, bạn phải khởi động SQL Server trong chế độ một người dùng. Để biết thêm thông tin, hãy tham khảo phầnẢnh hưởng của việc Thực thi DBCC SHRINKDATABASE hoặc DBCCSHRINKFILE Trong khi Tempdb Đang được Sử dụngtrong bài viết này.Xác định không gian đang được sử dụng trongtempdbbằng cách sử dụng quy trình được lưu trữsp_spaceused. Sau đó, tính toán phần trăm không gian trống còn lại để sử dụng làm tham số cho DBCC SHRINKDATABASE; việc tính toán này dựa trên kích thước cơ sở dữ liệu mong muốn.Chú ýTrong một số trường hợp, bạn có thể phải thực thisp_spaceused