- ベストアンサー
復旧中のデータベースについて
SQL Serverのバックアップを取る為 DBをオフラインにしたのですが いくつかのDBが [DB名](復旧中) となったまま状態が元に戻りません。 この状態を強制的に解除する方法はありますでしょうか? 教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
うーん、そもそもやり方に問題がありますね。 バックアップというのは、通常BACKUPコマンドを使って実行し、バックアップファイルの拡張子はBAKになります。 戻すときはRESTOREコマンドを使って実行します。 質問者さんがやられたようにMDF/LDFのファイル自体をコピーする方法は一般的ではありません。 が、もしやるならば、「オフラインにする」のではなく、「データベースのデタッチ」を実行してデータベースを一旦切り離し、 それからコピーするのが正しい方法です。 (お勧めはしませんが、SQL Serverサービスを停止させてからコピーする方法もあります) データベースのステータスはシステムデータベースのmasterが管理しています。 データベースをオフラインにして、ファイルを差し替えたことにより、masterデータベースの把握している状態と齟齬が生じてしまったため、そのような状態になってしまったと考えられます。 そのデータベースをドロップするかデタッチして、改めてMDF/LDFをアタッチするしかないと思いますが、前にコピーしたMDF/LDFも同じ方法でとったものならば、わずかながらうまくいかないリスクはあります。 SQL Serverのバージョンは何ですか?Enterprise ManagerもしくはSQL Server Management Studioが使える状態ですか? (バックアップ、リストア、デタッチ、アタッチはGUIでできるので)
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
何をやったのかをもう少し詳細に書いてほしいです。 (オフラインにしたデータベースのバックアップは取ることができないから)
補足
DBをオフラインにした後に ldfファイルとmdfファイルを昔のものと差し替えて DBをオンラインに戻すといくつかのDBが [DB名](復旧中)となってしまいました。 バックアップの取り方、戻し方がそもそも この方法では駄目だったのでしょうか・・・
お礼
ご回答ありがとうございます!! jamshid6さんが仰るように SQL Server Management Studioで デタッチ⇒MDF/LDFのコピー⇒アタッチでMDF/LDFの選択を行ったら 無事に戻すことができました。 (復旧中のままだったDBはデタッチしました。) BACKUPコマンド、RESTOREコマンドも調べて 使えるようにしておきます!