2

間違ったテーブルで誤ってTRUNCATEコマンドを実行しましたが、すべてのデータが失われました。バックアップはありますが、2週間前のものであり、最新のデータがすべて揃っているわけではありません。

このコマンドをロールバックして、可能であればデータを取り戻すにはどうすればよいでしょうか。これを行うことができるサードパーティのツールはありますか?

4

2 に答える 2

2

簡単な答えは、トランザクションがすでにコミットされている場合はロールバックできませんが、データ(または少なくともその一部)を取り戻すために何か他のことを行うことはできます。

truncateステートメントを実行すると、データはまだMDFファイルにありますが、SQL Serverがこれを空き領域として処理しているため表示されません(truncateは基本的にSQL Serverにデータページの割り当てを解除するように指示しています)。

データを取り戻す唯一の方法は、割り当て解除されたデータページを何らかの方法で読み取り、読み取り可能なデータに変換することです。

重要:空き領域はまだ新しいデータで上書きされるため、迅速に対応する必要があります。SQL Serverインスタンスを停止し、MDFファイルとLDFファイルのコピーを作成して、より多くの時間を費やすことができる場合。

ApexSQLRecoverを使用してみてください。私の知る限り、この種の復元を実行できるのはこのツールだけです。SQLが本当に得意な場合は、このような非常に長いスクリプトを変更して実行してみてください。

于 2013-04-15T03:12:32.607 に答える
0

それがトランザクションラップされていない限り、私はあなたが運が悪いのではないかと心配しています。これは同様の投稿ですが、これにもさらに説明があります。

http://www.sql-server-performance.com/forum/threads/how-to-rollback-truncate-operation.16968/

于 2013-02-25T11:42:12.797 に答える