3

テーブル内の行を誤って削除してしまい、それを復元したいと考えています。ここで解決策を見つけました: MS SQL サーバーで削除されたレコードを回復する方法

削除後に取得したバックアップからデータベースを復元しようとしました。しかし、STOPAT オプションを使用してデータベースを復元することはできません:

RESTORE LOG database FROM  DISK = N'X:\database.BAK' WITH
STOPAT = N'2011-02-12T00:00:00', RECOVERY

次のエラーがあります:

Msg 3117, Level 16, State 4, Line 1
The log or differential backup cannot be restored because no files are
ready to rollforward.
Msg 3013, Level 16, State 1, Line 1
RESTORE LOG is terminating abnormally.
4

4 に答える 4

8

削除後に取得したバックアップからデータベースを復元しようとしました。

削除後に取得したバックアップから、削除されたレコードを復元することはできません。必要なもの:

  • 削除に作成された最新の完全バックアップ
  • 最後の完全バックアップから、削除の直後に作成された最初のログ バックアップまでの間に作成されたすべてのログ バックアップ
  • データベースは完全復旧モードである必要があります

ログ バックアップ チェーンの長さを短縮するために差分バックアップを挿入することもできますが、これはオプションです。

上記のすべての条件が満たされている場合にのみ、先に進んで手順に従うことができます。上記のいずれかが欠けている場合、その記録は失われます。経験則として、これを含むブログ記事やフォーラムの回答に従わず、代わりに製品ドキュメントに従ってください:方法: 特定の時点に復元する (Transact-SQL)

于 2011-02-14T18:01:40.610 に答える
3

データベースが完全復旧モードの場合は、ApexSQL Logなどの商用ツールまたは DBCC LOG や fn_log などの SQL サーバー コマンドを使用して、トランザクション ログを読み取り、そこからデータを復旧することができます。

また、詳細については、次の投稿を参照してください。

SQL Server 2005 で削除操作を元に戻すには?

SQL Server 2008 でトランザクション ログを表示する方法

于 2013-04-15T09:18:53.273 に答える
2

このリンクから取得-

差分バックアップは、最後の完全データベース バックアップ以降に変更されたデータ ページのみを含みますが、ログ バックアップを使用する場合と同様に、完全バックアップと組み合わせてのみ復元できます。単一のテーブルまたはオブジェクトのみを復元することはできませんが、データベース、ファイル グループ、ファイル、およびページ レベルで復元できます。任意のバックアップから特定の時点まで復元することもできます (必要な前のフル、差分、ログを復元したと仮定します)。

この場合の最善の解決策は、別のデータベース名を使用してデータベースを復元し、必要なデータのみを既存のデータベースに移動することでしょうか? それがまさにあなたが達成しようとしているものかどうかはわかりません。

于 2011-02-14T13:34:27.510 に答える