Có thể khôi phục bakl-server bak và thu nhỏ nhật ký cùng một lúc không?


26

Chúng tôi có một tệp bak từ một khách hàng mà chúng tôi đã chuyển đến văn phòng nhà phát triển của chúng tôi để điều tra vấn đề. Bản sao lưu hiện tại là 25 GB và cơ sở dữ liệu được khôi phục có cùng kích thước tuy nhiên cần 100 GB để được khôi phục. Tôi tin rằng điều này là do có cơ sở dữ liệu được thiết lập để có kích thước nhật ký giao dịch 75GB. Sau khi khôi phục cơ sở dữ liệu, chúng ta có thể thu nhỏ tệp nhật ký nhưng có cách nào để thực hiện việc này trong khôi phục không?


3
Rằng tôi biết rằng bạn không thể thay đổi cơ sở dữ liệu cho đến khi hoàn thành việc khôi phục.
Shawn Melton

3
Tôi đã ở trong tình trạng tương tự và tôi mong chờ câu trả lời. Chỉ cần bình luận, có một sản phẩm: khôi phục ảo SQL của cổng đỏ. Tôi chưa bao giờ sử dụng điều này, nhưng theo trang web: 'Cơ sở dữ liệu được gắn yêu cầu lưu trữ bổ sung gần 0 không trên tệp sao lưu'.
StanleyJohns

Câu trả lời:


16

Không có cách nào để thu nhỏ bản sao lưu như là một phần của quá trình khôi phục. Cơ sở dữ liệu được khôi phục phải trông giống hệt cơ sở dữ liệu nguồn với ngoại lệ duy nhất là bạn có thể thay đổi các ký tự ổ đĩa và thư mục xung quanh.


34

Có một hack môi trường không bao giờ thực hiện trong môi trường sống mà bạn có thể sử dụng khi không gian bị giới hạn, bằng cách khôi phục tệp nhật ký vào thư mục nén. Cố gắng điều này bằng cách nén một thư mục hiện có và khôi phục lại nó sẽ dẫn đến một lỗi, do đó bạn phải gian lận với một liên kết tượng trưng.

  1. Tạo một thư mục nén D:\LogCompressed\
  2. Tạo một liên kết tượng trưng đến thư mục nén mklink /D /J D:\Log\ D:\LogCompressed\

  3. Khôi phục cơ sở dữ liệu của bạn với tệp ldf trỏ vào D:\Log\

  4. Thu nhỏ tệp nhật ký đến một kích thước phù hợp

  5. Tháo cơ sở dữ liệu, di chuyển tệp nhật ký vào thư mục không nén, đính kèm

Nó bẩn, nó gian lận, ĐỪNG BAO GIỜ LÀM NÓ , nhưng nó hoạt động. Kiểm tra nhanh cơ sở dữ liệu mới được tạo với tệp nhật ký 32 MB cho thấy nó chiếm 330kb trên đĩa khi được nén, giải nén thư mục và trên kích thước đĩa trở lại 32 MB.


2
@Mark: Hack này hoạt động, nhưng không hoàn hảo. Ngay cả khi tệp nhật ký chiếm ít không gian hơn kích thước thực của nó, bạn không thể khôi phục cơ sở dữ liệu trừ khi đĩa thực sự có không gian trống nhiều như kích thước thật của cơ sở dữ liệu. Bên cạnh đó, trong khi khôi phục, kích thước hoạt động của tệp nhật ký giảm chậm so với kích thước thật, đau đớn của nó. Tuy nhiên, nó vẫn là một hack rất tốt. Cảm ơn.
chenwq

9

Tôi tin rằng lý do sao lưu của bạn là 25 GB và cơ sở dữ liệu được khôi phục là 100 GB không phải vì nhật ký giao dịch của bạn. Tôi đoán là, các tệp cơ sở dữ liệu của bạn có 100 GB dung lượng được phân bổ và có 25 GB dữ liệu thực tế trong cơ sở dữ liệu.

Có sự khác biệt giữa không gian tệp cơ sở dữ liệu được phân bổkhông gian dữ liệu được sử dụng . Trong trường hợp này, cái trước là 100 GB và cái sau là 25 GB.


1
Khách hàng phân bổ 75GB vào nhật ký giao dịch của họ. Sau khi khôi phục, tôi hiện thay đổi phân bổ nhật ký thành 1GB. Nếu có thể tôi muốn khôi phục cơ sở dữ liệu này đến một máy chủ nơi các ổ đĩa có ít hơn 100 GB dung lượng trống. Không cần phải khôi phục đến một máy chủ khác, cắt ngắn, sao lưu và khôi phục lại.
Adam Butler

@Adam Butler, có thể tạm thời khôi phục máy chủ đầu tiên để bạn có thể thu nhỏ kích thước tệp, sau đó tạo bản sao lưu của bản sao và khôi phục tệp đó trên máy chủ đích không?
DForck42
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.