2010-01-27 15 views
2

Je veux faire ceci, parce que j'aimerais savoir combien de fois une rangée particulière a été changée.Comment faire une requête à partir de fichiers journaux (.ldf) de Sql Server 2005 Express Edition?

Est-ce possible?

Merci

+0

Est-ce une exigence ou hors d'un processus ad hoc que vous souhaitez effectuer régulièrement? –

+0

Il s'agit d'un processus que j'aimerais effectuer régulièrement. Dites que je veux produire un rapport sur le nombre de fois qu'une ligne particulière a été modifiée en un mois. –

Répondre

2

La lecture du fichier journal prend soit un outil commercial, ou une quantité incroyable de connaissances SQL équipements internes pour atteindre. Vous pouvez voir une partie de la sortie brute en utilisant: Sélectionnez * from :: fn_DBlog (null, null)

En fait, décoder pour trouver le même enregistrement étant modifié et s'assurer que toute modification a été commise, etc serait une tâche difficile à mettre à la légère. Il est donc 'possible' mais pas très probable que vous puissiez le faire.

Si vous avez besoin de cette fonctionnalité dans une base de données, alors vous devriez regarder les triggers/la logique dans le code.

+0

Je voudrais prendre l'itinéraire improbable. Des pointeurs sur comment puis-je commencer cela? (Liens ou quelque chose?) –

+0

Jetez un oeil à https://www.blackhat.com/presentations/bh-usa-07/Fowler/Presentation/bh-usa-07-fowler.pdf diapositive 21 et suivantes - vous allez bientôt réaliser Comme c'est difficile de décoder. – Andrew

+0

Et je devine que la façon dont nous obtenons les anciennes transactions va être différente pour MS SQL Server et Oracle. Est-ce vrai? Si c'est le cas, je suppose que je dois laisser ça et partir. Quoi qu'il en soit, plus de liens seront utiles. Merci mon pote. –

0

SQL Server à l'aide Tenir compte 2008.

Il y a une nouvelle fonctionnalité à SQL Server 2008 appelé Change Data Capture qui fait exactement ce dont vous avez besoin, qui est de suivre les modifications de données au fil du temps. Si vous souhaitez inspecter le fichier journal afin de suivre les modifications, il n'est pas conseillé de le faire. Cela vous fournira un historique limité, dont la portée dépendra également du modèle de récupération que vous utilisez pour votre base de données.

Vous pouvez "rouler votre propre" solution avec une petite quantité de développement, en utilisant une table de journal et en la remplissant à l'aide de déclencheurs SQL Server. La pertinence d'une telle solution dépend bien entendu de votre analyse de rentabilité.

Jetez un oeil à l'article TechNet suivant pour une lecture intéressante:

Tracking Changes in Your Enterprise Database

1

réponse tardive mais j'espère que ce sera utile pour les nouveaux lecteurs ...

Une autre fonction que vous pouvez essayer DBCC LOG mais malheureusement c'est une fonction non documentée comme fn_dblog.

Problème avec le journal des transactions dans SQL Server est qu'il n'a jamais été destiné à être utilisé pour cela, mais seulement pour permettre des propriétés de récupération et de transaction ponctuelles. Il est un log reader from ApexSQL commercial que vous pouvez essayer.

Voici également quelques messages similaires qui pourraient vous aider à avancer dans la bonne direction.

Read the log file (*.LDF) in sql server 2008

SQL Server Transaction Log Explorer/Analyzer