SharePointサーバーがあります。バックアップツールに問題があり、データベースの一部が復元状態のままになっています。
復元プロセスを停止することは可能ですか?また、データベースの整合性が損なわれていないことをどのように確認できますか?
これは、リストアスクリプトが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;
ご存知のように、デフォルトのデータベース復元オプションは、データベースの復元が完了した後、データベースが利用可能でありオンラインで使用できることを保証するリカバリを使用しています。
例:
RESTORE DATABASE YourDB FROM DISK= 'C:\\Data\\YourDBBackup.bak'
WITH RECOVERY
GO
Restore with NO Recoveryの重要なポイントを見てみましょう
NoRecoveryで復元
このオプションは、複数のバックアップを復元する場合に特に使用されます。つまり、norecoveryオプションを指定して復元コマンドを実行すると、データベースは、最後のバックアップが順番に復元されるまでユーザーに解放されません。最後のバックアップでは、リカバリオプションが使用され、データベースがオンラインになります。
例:
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
私はこの状況にあっただけで、治療法は驚くべきものでした。
ALTER DATABASE DBName SET ONLINE;
どうやら、壊れたNetBackupのリストアは、変な状態のままにした。他の解決策は機能しませんでした(ただし、SQL Serverサービスの再起動はまだ試していません)
データベースには注意しますが、理論的には復元が開始して失敗すると、データが破損する可能性があります。とにかくデータベースをもう一度復元するので、それは私には関係ありません。