web-dev-qa-db-ja.com

SQL Serverがデータベースを復旧中と表示する

今日、停電後、1つのデータベース(Recovery:full)がSSMSで「回復中」と表示されます。そう:

myDatabase(回復中)(データベースのステータス:回復、シャットダウン)

終了後、データベースの「リカバリプロセス」には、「(リカバリ中)」なしでmyDatabaseという名前が表示されます。問題は解決したと思いましたが、解決しませんでした。

そのデータベースを使用するアプリケーションを起動すると、データベース名の横に「(回復中)」という余分なテキストが再び表示されます。

「回復プロセス」が完了するまで待ってから、データベースをオフラインにして、オンラインに戻しました。

サーバーを再起動し、コンピューターを再起動しました。アプリケーションの実行中に、余分なテキストが再び表示されます。 SQL Serverログに、「データベース 'myDatabase'を起動しています」というメッセージが数回表示されます。データを挿入できるため、データベースは機能しているようですが、状態は何かが発生していることを示しています。

サーバーログに何も表示されていません。唯一異常なのは、「データベース 'myDatabase'を起動しています」のエントリが30個あることです。

サーバーが起動すると、すべてのデータベースが使用できるようになる前にリカバリを実行することを知っています。しかし、私の場合、データベースがオンラインになり、「myDatabase(In recovery)」と表示されます。アプリケーションを閉じると、データベースはStatus:Normalになります。これは私を夢中にさせています。

SQL Serverの新しいインスタンスをインストールし、その上に古いデータベース「myDatabase」を配置しました。問題はまだ発生します。

このクエリを実行すると:

SELECT databasepropertyex('nyDatabase', 'STATUS')

回復中、オンライン、容疑者、オンラインに戻ってから回復中などが表示されます。

23
Andres

コミュニティウィキの回答 元々は作成者による質問の編集として残されました:

問題は、データベースプロパティAutoCloseがオンに設定されていることでした。

解決策は、AutoCloseをfalseに設定することでした。

2
user126897

これが問題の解決に役立つかどうかはわかりませんが、試してみることはできます。

実行:

RESTORE DATABASE YourDatabase WITH RECOVERY

上記によってデータベースが回復モードから抜けるかどうかを確認します。そうでない場合、問題は別の問題である可能性があります。

以下のコマンドを試して、データベースが破損しているかどうかを確認できますか?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

破損が検出された場合は、DBCC CHECKDBを使用してデータベースを修復することができます。

16
RK Kuppala

データベースをオンラインにすると、回復プロセスが実行されます。私はあなたの問題の言い回しに少し混乱しています。データベースがオフラインになったとき(元の電源障害から、またはデータベースをオフラインにしてから再びオンラインにしたとき)以外に、データベースが復旧するのを見ていますか?その場合、データベースは他の何らかの理由でオフラインになっています。何が起こっているかを確認するには、SQLサーバーのログを確認することをお勧めします。

また、Windowsのイベントログで、ディスク障害などを確認してください。通常の操作中に、データベースが起動してリカバリー状態になることはありません。

6
Ben Thul