Làm cách nào để tôi cắt bớt nhật ký giao dịch trong cơ sở dữ liệu SQL Server 2008?


9

Làm cách nào để tôi cắt bớt nhật ký giao dịch trong cơ sở dữ liệu SQL Server 2008?

Những cách tốt nhất có thể là gì?

Tôi đã thử điều này từ một blog như sau:

1) Từ cơ sở dữ liệu cài đặt đến phục hồi đơn giản, thu nhỏ tệp và một lần nữa thiết lập khôi phục hoàn toàn, trên thực tế bạn đang mất dữ liệu nhật ký có giá trị của mình và sẽ không thể khôi phục kịp thời. Không chỉ vậy, bạn cũng sẽ không thể sử dụng các tệp nhật ký tiếp theo.

2) Thu hẹp tệp cơ sở dữ liệu hoặc cơ sở dữ liệu thêm phân mảnh.

Có rất nhiều điều bạn có thể làm. Đầu tiên, bắt đầu thực hiện sao lưu nhật ký thích hợp bằng cách sử dụng lệnh sau thay vì cắt bớt chúng và mất chúng thường xuyên.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

Xóa mã SHRINKING tệp. Nếu bạn đang thực hiện sao lưu nhật ký thích hợp, tệp nhật ký của bạn thường (một lần nữa, các trường hợp đặc biệt được loại trừ) sẽ không phát triển quá lớn.


2
OK, và điều gì đã xảy ra khi bạn thử điều đó?

Câu trả lời:


4

Cách an toàn và chính xác nhất để cắt bớt tệp nhật ký nếu cơ sở dữ liệu ở Chế độ khôi phục hoàn toàn là thực hiện Sao lưu nhật ký giao dịch (không có TRUNCATE_ONLY. Điều này sẽ không được chấp nhận trong các bản phát hành trong tương lai và không được khuyến khích).

Có vẻ như bạn muốn thu nhỏ tệp nhật ký của mình sau đó, trong trường hợp đó bạn sẽ chạy một DBCC SHRINKFILE(yourTLogName)lệnh. Có một tham số thứ hai tùy chọn cho kích thước được yêu cầu để thu nhỏ nó thành.


8

Bạn có thể sao lưu nhật ký vào thiết bị null:

backup log [databasename] to disk = 'nul';

Hoặc bạn có thể chuyển mô hình khôi phục thành đơn giản và sau đó trở lại đầy đủ / số lượng lớn một lần nữa.


Tôi đã làm + một về điều này bởi vì đây là một công cụ trong hộp công cụ dbas và câu trả lời của bạn không xứng đáng với những phiếu bầu tiêu cực tôi nghĩ. Tôi đồng ý với quan điểm rằng cách tốt nhất là thực hiện sao lưu giao dịch, nhưng tất cả các công cụ tốt đều có thể được sử dụng một cách chính xác hoặc theo cách xấu.
Martin Sjöberg

6

Nếu bạn không quan tâm đến dữ liệu nhật ký của mình và chỉ muốn thoát khỏi nó:

Thay đổi mô hình khôi phục từ đầy đủ thành đơn giản, và sau đó trở lại đầy đủ. Thu nhỏ tệp bằng DBCC SHRINKFILE với đối số TRUNCATEONLY

Lệnh sau sẽ thay đổi mô hình khôi phục từ đầy đủ sang đơn giản

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

Lệnh sau sẽ thay đổi mô hình khôi phục thành đầy đủ

ALTER DATABASE <databse_name> SET RECOVERY FULL

Để tìm tên của tệp nhật ký, bạn có thể sử dụng truy vấn sau

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

Thu nhỏ tập tin

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

Xem Lệnh cắt ngắn tệp nhật ký Máy chủ SQL là gì? để biết thêm thông tin về điều này

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.