2009-07-30 13 views
2

Le problème est le suivant:Voir tous les journaux de transactions dans SQL Server 2008

t0: Insert is made into my database 
t1: Delete is executed 
t2: Full backup is made 
t3: Transaction log backup is made 

Comment puis-je récupérer l'enregistrement supprimé après t3 (qui est maintenant)? Je veux que la base de données soit dans un état entre t0 et t1. Le niveau de journalisation était complet. Editer: J'ai déjà exécuté DBCC LOG (DB-Name, 3), mais le journal semble être tronqué. Il y a seulement 10 articles bien qu'il y en ait des milliers.

Répondre

4

Pour relire le journal, vous devez toujours démarrer à partir d'un journal complet, appliquer les différentiels puis sauvegarder les journaux. La ligne de temps est toujours en avant de la sauvegarde complète, jamais en arrière. Donc, pour arriver à l'état après t0 (c'est-à-dire récupérer l'enregistrement supprimé) vous commencez avec une sauvegarde complète qui a été prise avant t0 puis appliquez les sauvegardes du journal avec stop à t0.

+0

Puis-je également voir toutes les activités qui se sont passées entre t0 et t1? – usr

+1

Pour afficher l'activité qui s'est produite entre t0 et t1, vous arrêtez la récupération du journal au moment t1 a eu lieu. Voir http://msdn.microsoft.com/en-us/library/ms179451.aspx –

3

Lance,

Le journal des transactions n'a pas été conçu pour afficher les transactions. Ce n'est pas vraiment ce genre de journal. De plus, lorsque vous avez effectué la sauvegarde du journal des transactions, cela aurait tronqué le fichier journal, car les informations ont été sauvegardées dans un fichier.

Il convient également de mentionner que lorsque vous placez une base de données dans le modèle de récupération complète, elle reste en mode simple jusqu'à ce que vous effectuiez une sauvegarde complète de la base de données. Par conséquent, si aucune sauvegarde n'a été effectuée avant t0, vous ne pouvez pas revenir à cet état.

Rob

4

Bien que pas une solution idéale, vous pouvez essayer de restaurer la sauvegarde de base de données dans la base de données séparée, comparer les bases de données et apporter des modifications nécessaires manuellement.

Une autre méthode consiste à utiliser un lecteur de journal de transaction tiers tel que ApexSQL Log.