bakファイルをより小さいmdfおよびldfデータベースファイルに復元する


11

私はレガシーデータベースの設計に悪夢のような欠如があるので、ここでは触れませんが、サーバー上のファイルは(比較的)巨大です。私が持っています:

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

このデータベースは毎晩.bakファイルにバックアップされ、レポートサーバーに送られ、そこで復元されます。.bakファイルは、わずか1.8 GBと非常に小さくなります。

ただし、レポートサーバーで復元しようとすると、スペース不足のため失敗します。サーバーには約100GBの空き容量があり、元のサーバーでファイルが消費した139.​​4GB全体を消費しようとしています。圧縮に関する私の知識がひどく間違っているのでない限り、1.8 GBのファイルが実際に7400%拡大されていないことにはかなりの自信があります。

私の質問:そのスペースを事前に予約せずにこのバックアップファイルを復元するようにSQL Serverに指示する方法はありますか?ログは気にしません。そこにデータが必要です。開発とスキーマの観点からデータベースを理解していますが、私は決してDBAの一種ではありません。

これはSQL Server 2008 R2にあります。助けや提案をありがとう。

回答:


11

バックアップには2つの情報が含まれます。

バックアップの実際のデータは1.8 GBです。ただし、メタデータは、元の本番サーバーと同様にファイルのレイアウトを記述します。圧縮のように見えますが、実際の圧縮ではありません。メタデータ対コンテンツです。問題は、RESTORE中にレポートマシンがメタデータに記述されているレイアウトを作成するため、114.6GB + 24.8GBになることです。本当の質問ですが、元のDBファイルレイアウトを再作成せずに復元できますか?いいえ。ただし、問題に対する別の解決策があります。元のDBを元に戻します。トランザクションログの縮小は、ログが主な問題であるため、実行する必要がある手順をカバーしています。次に、バックアップ/復元の代わりにログ配布を展開します


ありがとうございました; トランザクションログを圧縮することで、完全にうまくいきました。
eouw0o83hf 2012年

1
ログバックアップの代わりにログ配布??
トーマス・ストリンガー、2012年

4
@Shark:レポートマシンにDBを配信する手段として、完全バックアップではなくログ配布。
Remus Rusanu 2012年

ああ、問題のその部分は完全に見逃しました。説明をありがとうございます!!
トーマス・ストリンガー、2012年

0

SQL Server 2012では、データベースのmdfファイルのみを使用し、それをSQL Serverにアタッチできます:http : //msdn.microsoft.com/en-us/library/ms174385.aspx。SQL Serverは、サイズを指定できる新しいldfファイルを作成します。次に:

  • シンプルな復旧モデルを使用して、ログファイルが大きくならないようにする、または
  • 完全復旧モデルを使用して、定期的なトランザクションログのバックアップを作成します。これにより、ログファイルが大きくならないようにすることもできます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.