SQL Server 2017を使用しているASP.NETアプリがあります。レコードが削除される原因となるバグがどこかにあり、データを回復してバグの原因を見つけようとしています。私たちは毎日バックアップを取り、そこにあるべきであるはずのないレコードを見つけるためのクエリを持っているので、各バックアップでクエリを実行します。バックアップはかなり大きいですが、クエリにはデータベース全体から2つのテーブルしか必要ありません。 1か月以上のバックアップでこれを行う最も効率的な方法は何でしょうか?
私のアドバイスは、バックアップ全体を復元することです。私の現在の環境では、誰かが数か月に1回、誤ってテーブルを台無しにしています。それが起こるだけです。もちろん、常に最大のデータベースにアクセスします。 200 GBのバックアップファイル、完全に復元した場合は1 TB以上。コピーをどこかに復元し、必要な特定のテーブルを見つけ、その特定のデータを更新する方が簡単です。プロセス全体には約1時間ほどかかります。他の解決策はより速く、追加の財務コストに見合う価値があるか、または複雑さが増すと思います。
サードパーティのソフトウェアを使用しない場合、最善の策は、バックアップを1つずつ復元し、復元したデータベースでクエリを実行することです。
これらのレコードを含む最後のバックアップを探している場合は、どのデータベースを回復するかを賢く決めることができるので、すべてのデータベースを回復する必要はありません。
たとえば、レコードが含まれている場合は、最も古いバックアップを復元します。レコードが含まれていない場合は、途中でバックアップを実行します。レコードが含まれていない場合は、それらのバックアップ間でバックアップを作成します。など、これは面倒な作業ですが、少なくともすべて復元する必要があります。