データベースの復元を削除する方法


14

SQL Server 2008 R2でログ配布を実行しています。

セカンダリデータベースドライブの領域が不足し、ログ配布トランザクションログを適用していなかった状況があります。

これを修正する方法は、セカンダリでデータベースを削除し、ログ配布をゼロから構成することです。

現在の問題は、セカンダリデータベースが復元状態にあり、削除できないことです。どうすれば続行できますか?

たとえば、オフラインにしようとすると、エラーが発生します。

ALTER DATABASE is not permitted while the database is in the Restoring state.

復元中のデータベースでalterコマンドを発行することはできません。ドロップする必要があります。
ジェイソンカンバーランド

回答:


25
RESTORE DATABASE dbname 
FROM DISK = 'dbname .bak'
WITH REPLACE, RECOVERY --force restore 

あるいは単に

RESTORE DATABASE dbname WITH RECOVERY

REPLACE上書き既存のデータベースは、あなたがそれを削除するために気にいけない述べたように、あなたがあなたがあなたの既存のデータベースを上書きしたい場合にのみ、それを行います

RESTORE WITH RECOVERYは、コミットされていないトランザクションをロールバックすることにより、データベースを使用可能な状態のままにするデフォルトの動作です。追加のトランザクションログは復元できません。

これでデータベースがオンラインになります。その後、削除して再試行できます。


あなたの言っていることはうまくいったはずです。私の解決策は、SQLサービスを再起動し、その後データベースを削除することでした。
ピーター

true。サービスがオフの場合、トランザクションログを削除すると常に新しいログが作成されます。すべてのベスト
AmmarR

3

私がこの問題で行った最善の方法は、このコマンド「drop database [database name]」を書いてから、同じ名前で新しいデータベースを作成し、別の.bakファイルからデータベースを復元します。


破損したバックアップに関する質問には言及されていません。
ypercubeᵀᴹ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.