私の設定です。 1日に1回、DBのフルバックアップが運用サーバーから取得され、ローカルのSQL Serverインスタンスに復元されます。 15分ごとに、SQLトランザクションログが本番から検索され、ローカルに復元されます。DBバックアップの復元が完了し、同じストアドプロシージャ内のそのDBをクエリできますか?
RESTORE DATABASE [DBNAME] from [email protected] with NORECOVERY, REPLACE)
RESTORE LOG [DBNAME] from [email protected] with NORECOVERY
本番環境に障害が発生した場合は、代わりにローカルDBを使用する必要があります。
RESTORE DATABASE [DBNAME] with RECOVERY
UPDATE [DBNAME].dbo.[TABLE] SET [COL1] = 1
私は(同じSQL Serverインスタンス上で別のDBに)ストアドプロシージャにこのコードを入れている:これは、「復元仕上げ」と、このようにいくつかの設定値を変更することを意味します。二行目でエラーが発生しかし、私はそれを実行することができません:
Database 'DBNAME' cannot be opened. It is in the middle of a restore.
私はRESTOREクエリが実行されるまでのDBが利用できないので、これはSQL Serverエンジン(による検証を事前に起因していると仮定します)、私は可能な限りきれいにそれを回避する方法を知りたいです。私は以下の答えとして投稿した回避策を見つけましたが、問題を解決するには間違いなく素晴らしい方法です。
ありがとうございました!
リストアは別のトランザクションで行うことができます。 – NickyvV