(Tuyên bố miễn trừ trách nhiệm đối với các peeps bay từ Google: Tôi không khuyên bạn nên sử dụng phương pháp được hỏi trong câu hỏi này để lấy lại không gian tệp nhật ký! DBCC SHRINKFILE
Thay vào đó, hãy sử dụng .)
Tôi đoán rằng tất cả dữ liệu đã có trong tệp .mdf?
Có, tách ra bắt đầu một CHECKPOINT
trong cơ sở dữ liệu, vì vậy tất cả các trang dữ liệu bẩn làm cho nó vào đĩa.
Cơ sở dữ liệu không thể tách rời nếu nhật ký giao dịch được yêu cầu bởi một quy trình khác (phản chiếu, sao chép, v.v.) hoặc nếu không thể truy cập độc quyền (tất cả các giao dịch mở trong cơ sở dữ liệu cần phải cam kết hoặc khôi phục). Do đó, nhật ký sẽ không bao giờ chứa các giao dịch trên chuyến bay như bạn có thể thấy nếu nguồn bị tắt đột ngột (tức là sự cố).
Tệp .ldf về cơ bản là trống? Nếu tệp .ldf không trống thì nó chứa gì?
SIMPLE
recovery: tệp nhật ký sẽ chứa các bản ghi nhật ký mô tả sự CHECKPOINT
cố xảy ra trước khi cơ sở dữ liệu bị tắt. (A CHECKPOINT
cũng xóa nhật ký trong chế độ này.)
BULK_LOGGED
và FULL
phục hồi: tệp nhật ký sẽ chứa tất cả các bản ghi nhật ký chưa bị xóa. (Quá trình duy nhất xóa nhật ký trong chế độ này là sao lưu nhật ký.)
Mẹo: bản ghi nhật ký trong tệp nhật ký có thể được kiểm tra bằng TVF không có giấy tờ sys.fn_dblog
.
Nếu tôi xóa tệp .ldf và tự tạo một tệp .ldf dài 0 byte có cùng tên như trước đây, tôi có thể đính kèm lại cơ sở dữ liệu mà không mất dữ liệu không?
Làm điều này sẽ phá hủy thông tin tiêu đề tệp, do đó làm hỏng tệp nhật ký.
Để có được cơ sở dữ liệu để đính kèm, bạn sẽ phải xóa / đổi tên tệp nhật ký và đính kèm cơ sở dữ liệu bằng cách sử dụng ATTACH_REBUILD_LOG
SQL Server để tạo tệp nhật ký mới từ đầu ở vị trí mặc định.
Giả sử bạn đã làm điều đó,
Trong SIMPLE
phục hồi, sẽ không có dữ liệu người dùng nào bị mất vì tất cả những gì đã biến mất là CHECKPOINT
các bản ghi nhật ký tương đối không quan trọng .
Trong các mô hình khôi phục khác, nó sẽ phá vỡ chuỗi sao lưu nhật ký và rõ ràng mọi bản ghi nhật ký đã xóa sẽ không còn được sao lưu (và có thể chưa được sao lưu). Điều này có ý nghĩa rõ ràng nên cơ sở dữ liệu cần phải được khôi phục.
Vì vậy, ... về mặt kỹ thuật, không, sẽ không có bất kỳ mất dữ liệu ngay lập tức ; tuy nhiên, phương pháp này chắc chắn không phải là một thực hành tốt, đặc biệt là trong một mô hình phục hồi khác SIMPLE
.