回答:
これはおそらく、復元スクリプトがWITH NORECOVERY
パラメーターを追加して、復元後にデータベースをトランザクションログの適用に対応できるようにするために発生します。
データベースは現在、最新のトランザクションログファイルを待機しています。
次のいずれかが可能です。
RESTORE LOG database_name FROM backup_device WITH RECOVERY;
...またはを使用して、最新のトランザクションログを適用します... WITH RECOVERY;
...またはRESTORE DATABASE YourDb WITH RECOVERY;
これを行う前に、これらのオプションの意味を理解してください。注意しないと、データが失われる可能性があります。
詳細はこちらをご覧ください:
この問題を解決するための簡単なT-SQLスクリプト:
新しいクエリウィンドウでこのスクリプトを記述して実行します。
RESTORE DATABASE [DataBase Name] WITH RECOVERY;
私はちょうどこのような状況にあり、治療法は非常に驚くべきものでした:
ALTER DATABASE DBName SET ONLINE;
破損したNetBackupの復元により、奇妙な状態になったようです。他のソリューションは機能しませんでした(SQL Serverサービスの再起動はまだ試していませんでした)
ただし、理論的には復元が開始されて失敗すると、データが破損する可能性があるため、データベースには注意してください。とにかくデータベースを復元するだけなので、私には関係ありません。
ALTER DATABASE
許可されていない、私は私の場合には、データベースが実際に状態を復元のように見せていた、そして使用することをお約束SET ONLINE
実際に働きました。だから、あなたは私を間違っている、または嘘をついていると言っていることを理解してください。これは、代替手段が利用可能なときに本当に必要なことですか?
ONLINE
状態に設定できるようにすることもできます。要するに、あなたのコメントと下票はこのサイトの範囲外であり、私が提示したデータで適切に修飾されていないため、あなたの情報は事実上間違っていると思います。
ご存知のように、デフォルトのデータベース復元オプションは、データベースの復元が完了した後、データベースが使用可能でオンラインで使用できることを保証するリカバリ機能です。
例:
RESTORE DATABASE YourDB FROM DISK= 'C:\\Data\\YourDBBackup.bak'
WITH RECOVERY
GO
NO Recoveryを使用した復元に関する重要なポイントを見てみましょう
NoRecoveryを使用した復元
このオプションは、特に複数のバックアップを復元する場合に使用されます。つまり、norecoveryオプションを指定してrestoreコマンドを実行すると、最後のバックアップが順番に復元されるまで、データベースはユーザーに解放されません。最後のバックアップでは、回復オプションが使用され、データベースがオンラインになります。
例:
RESTORE DATABASE YourDB FROM DISK - 'C:\\Data\\Backup_part1.bak'
WITH NORECOVERY
GO
その後:
RESTORE LOG YourDB FROM DISK = 'C:\\Data\\BackupLog-part2.trn'
WITH RECOVERY
GO
RESTORE ...WITH NORECOVERY
ます。再確認していただけますか?