2016-09-16 5 views
2

Microsoft SQLサーバには、同じサーバに2つのデータベースがあります。そのうちの1つは、リモートから正常にアクセスできます。しかし、もう一方はそうではありません。これは、エラーログに次のメッセージを返します。リカバリモードのSQLサーバのデータベース

Login failed for user 'adminUsr'. Reason: Failed to open the explicitly specified database 'alg_test.alg_test'. [CLIENT: ]

Error: 18456, Severity: 14, State: 38.

それから私は、Microsoft SQL Serverの管理に移動して、データベースのステータスを確認します

*SELECT databasepropertyex('alg_test.alg_test', 'STATUS')* 

と、この得た:

をRECOVERING

データベースが常に回復しているようです。これをどうすれば解決できますか?最後にデータベースへのアクセスをリモートで行います。

+0

[MSDN](https://msdn.microsoft.com/en-us/library/ms190442.aspx)に記載されているように、回復が成功するとデータベースは自動的にオンラインになります。リカバリに失敗すると、データベースが不審になります。データベースは使用できません。最終的にオンラインまたは「疑わしい」になります。回復に時間がかかり過ぎると、回復せずにSQL Serverを起動できる可能性があります。そのためのトレースフラグがあると思います。 – NickyvV

+0

[Trace Flag 3608](https://msdn.microsoft.com/en-us/library/ms188396.aspx)を参考にしてください。ただし、記事に記載されているように注意してください:*注:通常の操作では使用しないでください。* – NickyvV

答えて

2

さてあなたは、SO、これが無いバックアップファイルでリカバリ・プロセスを終了します

RESTORE DATABASE mydatabase WITH RECOVERY 

このスクリプトを試みることができます。 「データベースを使用中です」というエラーメッセージが表示された場合私はあなたがサービスを停止し、データベースを削除してから '回復'で復元しようと考えていると思う。

+0

これは通常の回復ですか? – TheGameiswar

+0

はい@TheGameiswar – mfredy

7

データベースが回復している理由を確認するには、SQL Serverのエラーログをチェックする。一般的な原因の1つは、フルバックアップ、差分バックアップ、およびログバックアップからNORECOVERYオプションを使用してデータベースをリストアしたが、最後のリストア時にRECOVERYが指定されていないことです。この場合の解決策は単にRESTORE <your database> WITH RECOVERY;です。

もう1つの一般的な原因は、大きなデータ変更操作のためにトランザクションログがいっぱいになり、SQL Serverがトランザクションをロールバックしてデータベースを回復しているためです。エラーログには、回復の進行状況のメッセージが含まれます。待つよりも時間がかかりますが、データベースをバックアップから復元する方が早いかもしれません。

+0

あなたはもっと良い説明をしました。 – mfredy

+1

'RESTORE DATABASE mydatabase WITH RECOVERY'が動作しない場合は、dbをオフラインにしてからオンラインにしてみてください。 –

関連する問題