Tôi có thực sự cần phải giữ các tệp .LDF không?


9

Mỗi tháng chúng tôi thực hiện một ảnh chụp nhanh cuối tháng của cơ sở dữ liệu sản xuất của chúng tôi. Các ảnh chụp nhanh cuối tháng này hoàn toàn dành cho mục đích báo cáo, không có chèn, cập nhật hoặc xóa từng được thực hiện trên chúng. Mỗi ảnh chụp nhanh có một .MDF.LDFtập tin.

Tôi muốn xóa các .LDFtập tin và giải phóng một số không gian trên máy chủ. Có bất kỳ lý do tại sao tôi cần phải giữ các .LDFtập tin?

Làm rõ:

Cơ sở dữ liệu sản xuất của chúng tôi được tạo lại mỗi đêm từ các trích xuất tệp của hệ thống khác. Chúng tôi chỉ báo cáo về cơ sở dữ liệu sản xuất ... không có cập nhật nào được thực hiện.

Quá trình hàng đêm:
Từ những gì tôi có thể nói ...
Mỗi đêm, các bảng dữ liệu được cắt bớt
Các bảng được điền thông qua một loạt các câu lệnh chèn số lượng lớn
Các chỉ mục được xây dựng lại

Câu trả lời:


16

Bạn không nên xóa tệp nhật ký. Nếu bạn đang cố gắn lại một tệp dữ liệu mà không có nhật ký, SQL Server có thể tạo lại nó về mặt kỹ thuật, nhưng có một vài vấn đề tiềm ẩn, như nếu có các giao dịch mở khi cơ sở dữ liệu bị tách ra. Trong trường hợp đó, bạn sẽ mất toàn bộ dữ liệu.

Sử dụng dung lượng và không xóa các tệp nhật ký của bạn . Bạn đang yêu cầu rắc rối với điều đó.

Xem bài viết này về Nhật ký giao dịch , đặc biệt là phần "Quản lý nhật ký sai".


9

Như đã đề cập trong câu trả lời khác , bạn không thể xóa tệp nhật ký. Những gì bạn có thể làm là thiết lập cơ sở dữ liệu READ_ONLY. Với cơ sở dữ liệu READ_ONLY, không có sửa đổi nào được cho phép và tệp nhật ký sẽ không phát triển. Bạn có thể giảm kích thước của tệp nhật ký xuống kích thước tối thiểu và đạt được mục tiêu tối thiểu của bạn. Để thiết lập cơ sở dữ liệu READ_ONLYchạy lệnh sau:

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

Bạn có thể thay đổi cơ sở dữ liệu trở lại READ_WRITE, thực hiện bất kỳ thay đổi nào cần thiết, sau đó đặt nó thành READ_ONLYbất kỳ lúc nào bạn cần.

Tệp nhật ký vẫn được yêu cầu để duy trì các thuộc tính ACID của cơ sở dữ liệu.


2

Thực tế là bạn có thể tạo một cơ sở dữ liệu chỉ bằng cách sử dụng tệp mdf. Đó là lệnh sp_attach_single_file_db (Transact-SQL). Lưu ý rằng nó sẽ bị xóa trong phiên bản tương lai của Microsoft SQL Server. Nhưng, thật không thông minh khi xóa các tệp LDF của bạn. Shark nói đúng 'Bạn đang yêu cầu rắc rối với điều đó.' Một quan điểm khác - các tệp ldf của bạn có lớn không? Nếu có, bạn có thể làm gì đó với họ.

  1. Đặt cơ sở dữ liệu của bạn thành mô hình khôi phục đơn giản . Bạn chỉ có thể làm điều này nếu bạn không muốn khôi phục các giao dịch
  2. Thay vì tạo các tệp MDF và LDF, hãy tạo tệp sao lưu cơ sở dữ liệu (.BAK) đầy đủ. Nó sẽ nhỏ hơn so với gỗ MDF + LDF

-3

Đây là giải pháp tôi đã đưa ra để thu nhỏ các tệp LDF.

  1. Cơ sở dữ liệu tách ra
  2. Đổi tên tệp LDF thành * _old.ldf
  3. Đính kèm cơ sở dữ liệu
  4. Hủy bỏ giới thiệu đến LDF bị thiếu

Điều này tạo lại một tệp LDF có kích thước 504K.

  1. Xóa * _old.ldf
  2. Thùng rác

Điều này đã lấy lại một lượng không gian đĩa đáng kể trên máy chủ. Nó hoạt động với chúng tôi vì tất cả các cơ sở dữ liệu này chỉ là cơ sở dữ liệu báo cáo tĩnh. Không có Chèn, Cập nhật hoặc Xóa nào sẽ được thực hiện đối với các cơ sở dữ liệu này.

CẬP NHẬT 2019-09-24: Vâng, tôi đồng ý đây là một ý tưởng thực sự tồi tệ. Tôi đã ngừng làm điều này gần như ngay lập tức. Tôi đã xây dựng lại tất cả các chỉ mục bằng cách sử dụng hệ số lấp đầy là 100. Chỉ thu nhỏ các tệp .ldf. Và thay đổi tất cả các cơ sở dữ liệu để CHỈ ĐỌC.


6
Wow, đây là một ý tưởng thực sự xấu. Điều gì xảy ra nếu cơ sở dữ liệu không tách ra thành công hoặc bị mất hoặc bị hỏng ở đâu đó giữa 1 và 3? Bạn đang bị SCREWED. Bạn có bản sao KHÔNG của cơ sở dữ liệu của bạn.
Aaron Bertrand

3
Cách thích hợp để làm điều này sẽ là: 1. Sao lưu cơ sở dữ liệu COPY_ONLY. 2. Khôi phục nó trên máy chủ báo cáo. 3. Đặt khôi phục thành đơn giản và đánh dấu bản sao được khôi phục là chỉ đọc. 4. Thu nhỏ tệp nhật ký bằng tay. Có bạn cần không gian trong lúc này, nhưng bạn sẽ có được công việc của mình!
Aaron Bertrand
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.