Quản lý tập tin của bạn có thể là một hoạt động hoàn toàn trực tuyến. Bạn có hai đường dẫn, tùy thuộc vào nhu cầu giữ lại thông tin nhật ký của bạn cho mục đích khôi phục:
Không cần thời gian phục hồi
- Chuyển đổi cơ sở dữ liệu để
SIMPLE
phục hồi. Thực hiện một điểm kiểm tra để ghi các giao dịch vào đĩa.
- Làm phẳng các bản ghi.
- Thay đổi kích thước nhật ký để kích thước phù hợp.
Tôi cũng khuyên bạn nên đặt số tiền tăng trưởng cố định và tăng trưởng không giới hạn (để giúp quản lý nhật ký của bạn tốt hơn). Lưu ý, số tiền tăng trưởng cố định rất nhiều, tùy thuộc vào số tiền, tôi khuyên bạn nên sử dụng 1-2 GB ban đầu tùy thuộc vào mức tăng trưởng mà bản ghi có thể mong đợi. Lý tưởng nhất là nhật ký của bạn sẽ không phát triển nhiều, vì vậy điều này sẽ không ảnh hưởng nhiều. Nếu nhật ký của bạn đang phát triển thường xuyên, bạn có thể cần phải xem lại kích thước của mình.
Hoàn thành sử dụng:
ALTER DATABASE [foo]
SET RECOVERY SIMPLE;
CHECKPOINT;
DBCC SHRINKFILE (foo_log,0);
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
--Optional if you want the database in full recovery mode
--for point in time recovery going forward
ALTER DATABASE [foo]
SET RECOVERY FULL;
Cần phục hồi thời gian
Hangout lớn nhất sẽ là bạn không thể thu nhỏ tệp nhật ký của mình qua phân đoạn VLF hiện đang hoạt động. Để thấy điều này, bạn có thể sử dụng DBCC LOGINFO
trong bối cảnh cơ sở dữ liệu. Bất kỳ phân đoạn nào có Status = 2 đều hoạt động. Để xóa các phân đoạn hoạt động, bạn sẽ cần chạy bản sao lưu nhật ký giao dịch khi không có giao dịch nào đang hoạt động trong phân khúc đó. Các bước của bạn là:
- Chạy một bản sao lưu nhật ký giao dịch.
- Thu nhỏ tập tin của bạn. (Lý tưởng làm phẳng, nhưng nếu cơ sở dữ liệu của bạn đang hoạt động thì điều này sẽ khó thực hiện).
- Lặp lại bước 1 và 2 cho đến khi nhật ký của bạn có kích thước phù hợp, lý tưởng là càng nhỏ càng tốt.
- Thay đổi kích thước nhật ký để kích thước phù hợp.
Hoàn thành sử dụng:
BACKUP LOG [foo] TO DISK='<Location of t-log backup>';
DBCC SHRINKFILE (foo_log,0);
--Repeat the above until your log file is small "enough"
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
Một số tài nguyên bổ sung để hiểu những gì đang diễn ra ở đây: