Khôi phục tệp bak thành tệp cơ sở dữ liệu mdf và ldf nhỏ hơn


11

Tôi có một cơ sở dữ liệu kế thừa mà thiếu thiết kế ác mộng mà tôi sẽ không truy cập được ở đây, nhưng các tệp trên máy chủ thì tương đối lớn. Tôi có:

MyDatabase.mdf: 24.8GB
MyDatabase.ldf: 114.6GB

Cơ sở dữ liệu này được sao lưu vào tệp .bak mỗi đêm và được chuyển đến máy chủ báo cáo của chúng tôi, nơi nó được khôi phục. Tệp .bak nhỏ hơn nhiều chỉ có 1,8 GB.

Tuy nhiên, khi tôi cố gắng khôi phục nó trên máy chủ báo cáo, nó không thành công do không đủ dung lượng. Có khoảng 100 GB miễn phí trên máy chủ và nó đang cố gắng ăn hết toàn bộ 139,4GB mà các tệp đã sử dụng trên máy chủ gốc. Trừ khi kiến ​​thức về nén của tôi là sai lầm khủng khiếp, tôi khá tự tin rằng tệp 1,8 GB không thực sự mở rộng thêm 7400%.

Câu hỏi của tôi: Có cách nào để bảo SQL Server khôi phục tệp sao lưu này mà không cần đặt trước không gian đó không? Tôi không quan tâm đến bất kỳ nhật ký nào; Tôi chỉ cần dữ liệu ở đó. Tôi hiểu cơ sở dữ liệu từ quan điểm phát triển và lược đồ, nhưng tôi không có nghĩa là bất kỳ loại DBA nào.

Đây là trên SQL Server 2008 R2. Cảm ơn cho bất kỳ sự giúp đỡ hoặc đề nghị.

Câu trả lời:


11

Bản sao lưu chứa hai mẩu thông tin:

  • bố cục tệp cơ sở dữ liệu và siêu dữ liệu, nghĩa là. RESTORE FILELISTONLY ...
  • dữ liệu thực tế

Dữ liệu thực tế trong bản sao lưu là 1,8 GB. Nhưng siêu dữ liệu mô tả bố cục của các tệp như trên máy chủ sản xuất ban đầu. Trong khi nó trông giống như nén, không phải là nén thực tế. Chỉ là siêu dữ liệu so với nội dung. vấn đề là trong quá trình RESTORE, máy báo cáo tạo bố cục như được mô tả trong siêu dữ liệu, do đó 114,6GB + 24,8GB. Bây giờ cho câu hỏi thực sự: bạn có thể khôi phục nó với việc tái tạo bố cục tệp DB ban đầu không? Không. Tuy nhiên, có một giải pháp khác cho vấn đề của bạn: kiểm tra lại DB gốc. Thu nhỏ Nhật ký giao dịch bao gồm các bước bạn cần làm, vì nhật ký là điểm đau chính của bạn. Tiếp theo tôi sẽ triển khai nhật ký vận chuyển thay vì sao lưu / khôi phục.


Cảm ơn bạn; thu hẹp nhật ký giao dịch đã thực hiện thủ thuật một cách hoàn hảo.
eouw0o83hf

1
Đăng nhập vận chuyển thay cho sao lưu nhật ký ??
Thomas Stringer

4
@Shark: đăng nhập vận chuyển thay vì sao lưu đầy đủ , như một phương tiện để phân phối DB đến máy báo cáo.
Remus Rusanu

Oh okay tôi hoàn toàn bỏ lỡ một phần của câu hỏi. Cảm ơn bạn đã làm rõ!!
Thomas Stringer

0

SQL Server 2012 chỉ cho phép sử dụng tệp mdf cơ sở dữ liệu và đính kèm tệp đó vào SQL Server: http://msdn.microsoft.com/en-us/l Library / ms174385.aspx . SQL Server tạo một tệp ldf hoàn toàn mới nơi bạn có thể chỉ định kích thước. Sau đó:

  • sử dụng mô hình phục hồi đơn giản để giữ cho tệp nhật ký của bạn phát triển hoặc
  • sử dụng mô hình khôi phục đầy đủ và thực hiện sao lưu nhật ký giao dịch thường xuyên. Điều này cũng sẽ giữ cho tệp nhật ký phát triển
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.