web-dev-qa-db-ja.com

トランザクションログなしでSQL Server DBを復元する

SQL Server 2008.bakファイルが与えられた場合、データファイルのみ.bakファイルから復元する方法はありますかなしトランザクションログ

私が尋ねる理由は、このデータベースのトランザクションログファイルのサイズが非常に大きいためです。

トランザクションログには関心がなく、未完了のトランザクションには関心がありません。通常、データベースを復元したら、単にログをゼロに縮小します。しかし、そもそもログを作成するのに十分なディスク容量がない場合、それは役に立ちません。

必要なのは、トランザクションログではなく、.bakファイルからデータのみを復元するようにSQL Serverに指示する方法です。それを行う方法はありますか?

.bakファイルの生成を制御できないことに注意してください。これは外部ソースからのものです。 .bakファイルを生成する前にトランザクションログを縮小することは、notオプションです。

45
PhantomDrummer

これは実際にはServerFaultまたはDBAサイトにとっての質問ですが、短い答えはノーです。完全な.bakファイルのみを復元できます(ファイルグループや断片的な復元などの「エキゾチックな」シナリオは別として)。 「巨大」が何を意味するかは言わないが、ディスク容量は安い。さらに追加することが本当に選択肢にならない場合は、外部ソースからデータを取得する別の方法を見つける必要があります。

4
Pondlife

トランザクションログは、バックアップの不可欠な部分です。 SQL Serverにトランザクションログを無視するように指示することはできません。トランザクションログファイルを同時に復元および圧縮する方法がないためです。ただし、プロセスをハッキングするために DBA post を見ることができますが、まったくお勧めできません

または、サードパーティ製の復元ツール、特に多くのスペースと時間を節約できる仮想復元プロセスを試すことができます。 ApexSQL Restore 、RedGate Virtual Restore、Idera Virtual Databaseをご覧ください。

免責事項:ApexSQLでサポートエンジニアとして働いています

9
Marko Krstic

いいえ、トランザクションログが必要です。

オプション1:

オプションとして、十分なスペースがあるマシンに復元することがあります。次に、復元されたコピーで、ログを一括ログまたはシンプルに変更し、ログを圧縮し、この新しいコピーで別のバックアップ操作を実行してから、それを使用して、はるかに小さいトランザクションログでターゲットマシンに復元します。

オプション2:

または、外部ソースの連絡先は、トランザクションログを送信する前に縮小する可能性があります(大量のトランザクションが原因でログが大きい場合、これは機能しない可能性があります)。

ログファイルを圧縮するコマンドのドキュメントは こちらから入手可能 です。

7
Chris Townsend

.bakファイルの生成を制御できないため、これは機能しない可能性がありますが、データベースをデタッチしてから.mdfファイルのコピーを直接送信するようにソースを説得できる場合は、.mdfを添付し、サーバーは自動的に新しい空のトランザクションログファイルを作成します。

Sp_detach_dbおよびsp_attach_db(または、SQLサーバーのバージョンに応じて、CREATE DATABASE database_name FOR ATTACH)を参照してください。

2
Aaron

私はこれが今では古いスレッドであることを知っていますが、トランザクションログの破損の問題を抱えていたときに偶然見つけました、データ損失なしでそれを回避する方法は次のとおりです(ダウンタイムがありました!)

ここに私がやったことがあります:-

Sqlサーバーインスタンスサービスを停止し、影響を受けるデータベースの.mdfファイルと.ldfファイルのコピーを作成します(.ndfファイルがある場合は、それもコピーしてください!)あなたのために働きません。

サービスを再起動します。

SQL管理スタジオにログインし、データベースモードをシンプルに変更してから、完全バックアップを作成します。

データベースの種類を再度変更し、もう一度完全バックアップを取得してから、トランザクションログバックアップを取得します。

データベースを切り離します。

データベースを右クリックし、復元をクリックして、ドロップダウンリストからデータベース名を選択し、作成された後のフルデータベースバックアップ(シンプルモードから取得されたものではない)を選択し、トランザクションログバックアップも選択します。

[復元]をクリックすると、ログファイルが破損することなくすべて復元されます。

これはエラーなしで機能し、その後バックアップはすべて正常に機能し、トランザクションログエラーはなくなりました。

0
Filfish