SQL Serverは回復中のデータベースを表示します


23

今日、停電後、1つのデータベース(リカバリ:フル)がSSMSで「リカバリ中」と表示されます。そう:

myDatabase(リカバリ中)(データベースステータス:リカバリ、シャットダウン)

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

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

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

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

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

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

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

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

SELECT databasepropertyex('nyDatabase', 'STATUS')

回復中、オンライン、疑わしい、オンラインに戻った後、回復などが表示されます。

回答:


2

コミュニティWikiの回答は、元は作成者による質問の編集として残されたものです。

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

解決策はAutoClosefalse に設定することでした。


16

これが問題の解決に役立つかどうかはわかりませんが、試してみてください。

実行:

RESTORE DATABASE YourDatabase WITH RECOVERY

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

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

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

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


6

データベースをオンラインにするたびに、回復プロセスが実行されます。問題の言い回しに少し混乱しています。データベースがオフラインになったとき以外に、データベースが回復するのを見ていますか(元の停電から、またはオフラインにしてから再びオンラインにしたことによる)。その場合、データベースは他の何らかの理由でオフラインになっています。SQLサーバーのログをチェックして、何が起こっているかを確認するのが最善です。

また、ディスク障害などのWindowsイベントログを確認する必要があります。通常の操作中に、データベースが起動して回復状態になることはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.