LDFファイルからデータを回復するにはどうすればよいですか?


9

SQL 2005 Express Editionを使用しています。一部の削除されたレコードを復元するために、LDFファイルからデータを読み取ります。

ApexSQLの試用版を使用してみました。サードパーティのソフトウェアを使用する代わりに、ログファイルを自分で読み取る方法を見つけようとしています。

LDFファイルからデータを読み取って回復するにはどうすればよいですか?


データベースは完全復旧モデルを使用していますか、それとも単純ですか?
MartinC、2012年

はい、私たちは完全復旧モデルを使用しています
goofyui

ApexSQL試用版を使用してデータを回復できます。試用版では、データの表示のみが可能です。フルエディションを購入する予算がないため、.ldfファイルからデータを回復するために自分でそれを把握しようとしています
goofyui

回答:


11

以前の完全バックアップと、最後の完全バックアップ以降に取得されたログバックアップが必要です。

1)ログバックアップの末尾を取得する

BACKUP LOG OldDB TO DISK='C:\OldDB_Tail.trn' WITH NO_TRUNCATE

2)削除されたレコードのトランザクションを検索します(DELETEの場合はLOP_DELETE_ROWS、TRUNCATE TABLEの場合はLOP_SET_BITS&LOP_MODIFY_ROWになります)

SELECT * FROM fn_dblog(NULL,NULL) WHERE AllocUnitName = 'dbo.YourTableName'

3)以前のフルバックおよびログバックアップに加えて、NORECOVERYおよびSTOPAT = 'トランザクションの開始時間の直前'の新しいデータベースへの末尾を復元します。

RESTORE DATABASE NewDB
FROM DISK='C:\Previous_Full_Backup_Of_OldDB.bak'
WITH NORECOVERY,
STOPAT='2012/01/11 11:35AM',
MOVE 'OldDB' TO 'C:\DATABASES\NewDB.mdf',
MOVE 'OldDB_Log' TO 'C:\DATABASES\NewDB.ldf'

RESTORE LOG NewDB
FROM DISK='C:\Previous_TranLog_Backup_Of_OldDB.trn'
WITH NORECOVERY,
STOPAT='2012/01/11 11:35AM'

RESTORE LOG NewDB
FROM DISK='C:\OldDB_Tail.trn'
WITH NORECOVERY,
STOPAT='2012/01/11 11:35AM'

-- This recovers the restored database and allows access
RESTORE DATABASE NewDB WITH RECOVERY

このブログ投稿では、fn_dblogを使用してSTOPATする時間を見つける方法について詳しく説明しています。このブログの投稿では、ログから直接データを回復することに取り組んでいますが、これは特定の時点の回復と比較すると非常に時間がかかる可能性があります。

また、Robert L Davisによるこのブログ投稿には、STOPとSTANDBYを組み合わせて、さまざまな時点でのデータベースの状態を照会できるようにする例があります。


レコードの切り捨てについてはどうですか?それらの一部も切り捨てられていると思います.. !!
goofyui

1)古いデータベースから.trnを取得する方法。.ldf、.mdfを取得しました!! トランザクションログファイルがありません。
goofyui

ここでの考え方は、データベースがデータが失われる前の状態に回復することです。そうすれば、失われたデータのコピーを作成できるようになります。BACKUP LOGコマンドは、トランザクションログ(ldf)のアクティブな部分からtrnファイルを作成するものです
MartinC

あなたのポイントを完全に理解するのは難しいと思います。続行するための構文を共有していただけませんか..事故が発生したOldDBと、OldDBログファイルが復元される
NewDBを維持

1
回復する時点を見つけるための詳細とブログへのリンクを追加し、fn_dblogの出力を使用して削除された行を再生成する別のブログを追加しました。
MartinC、2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.