1

ログファイルからデータを復元する方法を考えていました。SQL 2005 (完全バックアップ) を使用しています。

問題は、サービスが昨夜私のデータを消去したことです (これはすべきではありません)。そして今、以前に削除された行を回復したいと考えています。

誰かが私にこれを行う方法を教えてもらえますか?

4

4 に答える 4

3

削除前のデータベースのバックアップと、最後のデータベース バックアップ以降に作成されたすべてのトランザクション ログ バックアップがある限り、特定の時点に復元できます。

最初に行うことは、トランザクション ログのバックアップを取ることです。

次に、最後のデータベース バックアップと、それ以降、削除の直前までのすべてのトランザクション ログ バックアップを復元します。

その方法については、このMSDN の記事を参照してください。

既存のデータベースをそのままにして、バックアップを新しいデータベースに復元することをお勧めします。次に、いくつかのスクリプトを記述して、必要なデータをライブ データベースに戻すことができます。

于 2009-09-03T08:14:22.890 に答える
2

まず、データベースが完全復旧モデルである必要があり、トランザクション ログ バックアップの完全なチェーン (ログ シーケンス番号 (LSN) の途切れのないシーケンスを持つ一連のログ レコード) が必要です。

ログ バックアップ チェーンは、データベースの完全バックアップが作成されるか、復旧モデルが SIMPLE から FULL に切り替えられて完全バックアップが作成されるときに開始されます。その後、トランザクション ログのバックアップが定期的に作成されます。ログ バックアップ チェーンは、次の 2 つの方法でのみ切断できます。

  • バックアップ セットの上書き
  • FULL から SIMPLE または BULK LOGGED 復旧モデルへの切り替え

ログ バックアップ チェーンを壊すと、トランザクション情報が失われる可能性があります

以下を使用して、特定の時点に復元できます。

  • Robin が提供するリンクに示されている SQL Server Management Studio
  • T-SQL と STOPAT オプションの使用

構文

RESTORE LOG database_name 
FROM <backup_device> 
WITH STOPAT = time, RECOVERY… 
  • 特定の時点に復元できるだけでなく、選択したトランザクションのみを選択的にロールバックできる ApexSQL Log などのサードパーティ ツールを使用します。

ここにリストされているすべてのオプションの手順を見つけることができます:特定の時点にデータベースを復元する

免責事項: 私は ApexSQL でサポート エンジニアとして働いています。

于 2014-03-21T20:37:04.900 に答える
1

次の場合にのみ、データを回復できます。1) データベースが完全復旧モデルを使用している。2)誤って削除する前に作成した完全なバックアップがあります。3) まだこのデータベースを復元またはバックアップしていません。

これが正しければ、次のことを行う必要があります。1) トランザクション ログのバックアップを作成します。2) NORECOVERY オプションを使用して完全バックアップからデータベースを復元します。3) STOPAT オプションを使用してトランザクション ログを復元します。

于 2009-09-03T08:25:54.643 に答える
0

トランザクション ログ ファイルを特定の時点に復元するには、データベースを完全復旧モデルで実行する必要があります。したがって、最初に最新の完全なデータベース バックアップを復元する必要があります。

RESTORE DATABASE *database* FROM DISK = 'D:/Full.bak' WITH NORECOVERY, REPLACE

次の手順では、最後の差分データベース バックアップを復元します。

RESTORE DATABASE *database* FROM DISK = 'D:/Diff.bak' WITH NORECOVERY

次に、最後の差分バックアップ以降に作成されたすべてのトランザクション ログ バックアップを正しい順序で復元します。

RESTORE LOG *database* FROM DISK = 'D:/log1.bak' WITH NORECOVERY
RESTORE LOG *database* FROM DISK = 'D:/log2.bak' WITH NORECOVERY
RESTORE LOG *database* FROM DISK = 'D:/log3.bak' WITH NORECOVER

復元する必要がある最後の 1 つのトランザクション ログ バックアップは、stopatオプションで障害が発生した後に作成されたトランザクション ログ バックアップです。オプションの後stopat、データベースを復元する時間を設定する必要があります。

RESTORE LOG *database* FROM DISK = 'D:/log4.bak' WITH STOPAT = '2015-11-26 16:22:40.000', RECOVERY
于 2015-11-27T08:50:32.290 に答える