次のクエリを使用して、スクリプトがデータベースから誤って数行を削除しました。
DELETE FROM that_table WHERE id IN (100, 101, 102)
その間に、さらに多くの行が追加されました。3つの行を同じテーブル(またはおそらく別のデータベース/テーブル)に復元する方法はありますか?そのクエリの後に追加/更新されたすべてのデータが失われることを意味するかのように、データベースを復元したくありません。不足している行を手で入力するのはオプションです。
次のクエリを使用して、スクリプトがデータベースから誤って数行を削除しました。
DELETE FROM that_table WHERE id IN (100, 101, 102)
その間に、さらに多くの行が追加されました。3つの行を同じテーブル(またはおそらく別のデータベース/テーブル)に復元する方法はありますか?そのクエリの後に追加/更新されたすべてのデータが失われることを意味するかのように、データベースを復元したくありません。不足している行を手で入力するのはオプションです。
ApexSQL Logを使用できます。これは、データベーストランザクションログから情報を読み取り、DML操作とDDL操作の両方に元に戻すT-SQLスクリプトを提供するSQLServer監査および回復ツールです。
免責事項:私はApexSQLで製品サポートエンジニアとして働いています
SQL Server 2000を使用している場合、無料のRedgate SQL Log Rescue Toolがこのバージョンに対して機能するため、運が良かったかもしれません。
幸い、バックアップがあったので、ここで説明する手順を使用して、同じサーバー上で新しいデータベースの下にバックアップを復元しました。
同じサーバー上の新しいデータベースへの完全バックアップの復元
データベースのバックアップが新しいデータベースに復元された後、行を見つけて挿入しました。
INSERT INTO that_database..that_table
SELECT * FROM copy_database..that_table WHERE id IN (100, 101, 102)
上記のクエリはそのままでは実行できませんでした。IDの挿入を有効にし、いくつかの制約を一時的に無効にする必要がありました。