web-dev-qa-db-fra.com

Comment récupérer des données du fichier LDF?

Nous utilisons SQL 2005 Express Edition. Nous voulons lire les données du fichier LDF afin de restaurer des enregistrements supprimés.

Nous avons essayé d'utiliser une version d'évaluation de Apexsql qui nous a beaucoup aidés. Au lieu d'aller pour des logiciels tiers, nous essayons de déterminer comment lire le fichier journal nous-mêmes.

Comment pouvons-nous lire et récupérer des données du fichier LDF?

9
goofyui

Vous aurez besoin d'une sauvegarde complète précédente et de toutes les sauvegardes de journal prises depuis la dernière sauvegarde complète.

1) Prenez une queue de la sauvegarde du journal

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

2) Trouver une transaction pour des enregistrements supprimés (opération sera lop_delete_rows pour Supprimer et lop_set_bits & lop_modify_row pour une table tronquée)

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

3) restaurer les sauvegardes de retour complet et de journal précédents plus la queue vers une nouvelle base de données avec norecovery et stopat = 'juste avant le début de la transaction'

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

Ceci Blog POST Couvre plus en détail Trouver le temps de mettre en place à l'aide de Fn_DBlog. Ceci blog POST a une option de récupération des données directement à partir du journal, mais cela pourrait être très chronométrant comparé à un point de récupération de temps.

Aussi, ceci blog Post de Robert L Davis a un exemple sur la combinaison de l'arrêt et de la veille pour vous permettre d'interroger l'état des bases de données à différents moments.

11
MartinC