Lire journal des transactions SQL Server
Comment nous pouvons lire les journaux des transactions SQL Server, je sais à l'aide de la commande DBCC log (base de données,4) et il va générer un journal de sortie de maintenant, je veux décoder Enregistrement de Journal qui est est format hex.
0x00003E001C000000A500000001000200be040000000006021d0000000100000018000000 (seulement une partie des données)
est il une méthode pour le lire en format texte ou convertir les données hexadécimales de texte.je veux en faire un outil qui permet de lire les journaux.troisième partie des outils sont disponibles, j'.e ApexSQL mais ils sont payés outils.
Pour faire quoi exactement?
double possible de Journal des Transactions SQL Server Explorer/Analyseur
double possible de Journal des Transactions SQL Server Explorer/Analyseur
OriginalL'auteur Nasir Mahmood | 2012-01-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
sys.fn_dblog
de lire le journal des transactions. L'exemple ci-dessous.Pour un
delete
etinsert
opération IIRC la[RowLog Contents 0]
contient l'ensemble de la ligne insérée et supprimés. Les mises à jour sont un peu plus complexe que seulement une partie de la ligne peut être connecté.Pour décoder ce format de ligne, vous devez comprendre la façon dont les lignes sont stockés en interne dans SQL Server. Le livre Microsoft SQL Server 2008 Internals couvre cela dans le détail. Vous pouvez également télécharger le SQL Server Internes de la Visionneuse aider à ce sujet (Et je crois que le code source pour Marque Rasmussen's Orca MDF est aussi disponible qui a sans doute un peu de code pour décoder l'intérieur de format de ligne).
Pour un exemple de cela dans TSQL voir ce blog qui démontre qu'il est parfaitement possible d'extraire de l'information utile à partir du journal aussi longtemps que le but du projet est limitée. L'écriture d'une pleine soufflé à la lecture du journal qui pourrait faire face à des modifications de schéma dans les objets et les choses comme les colonnes fragmentées (et de la colonne stockent des indices sur la prochaine version) serait probablement une énorme quantité de travail même si.
OriginalL'auteur Martin Smith
Il y a plusieurs fonctions de SQL Server et les commandes (par exemple fn_dblog, fn_dump_dblog, et DBCC PAGE) qui pourraient fournir un moyen pour afficher un fichier LDF contenu. Toutefois, d'importantes connaissances de T-SQL est requise pour les utiliser, certains sont sans-papiers, et les résultats qu'ils fournissent sont difficiles à être converti dans un format lisible par l'homme. Voici des exemples de visualisation de fichier LDF contenu à l'aide de SQL Server fonctions et commandes:
1 - Voici un exemple d'utilisation de fn_dblog à lire en ligne du journal des transactions, avec un résultat de 129 colonnes (seulement 7 illustré ici)
2 - Le fn_dump_dblog fonction permet de lire les journaux de transaction ou en mode natif natif sauvegardes compressées. Le résultat est similaire:
Malheureusement, aucune documentation officielle est disponible pour fn_dblog et fn_dump_dblog fonctions. Pour traduire les colonnes, vous devez être familier avec la structure interne et le format des données, indicateurs et leur nombre total dans une ligne de données
3 - DBCC PAGE est utilisée pour lire le contenu de la base de données en ligne des fichiers MDF et LDF. Le résultat est une hexadécimal de sortie, sauf si vous avez un éditeur hexadécimal, seront difficiles à interpréter
OriginalL'auteur Ivan Stankovic
vous obtenez liés à la transaction toutes les informations à l'aide de requête ci-dessus..où enregistrement de journal, la colonne affiche votre enregistrement réel qui est au format Hexadécimal..
vérifier ce lien pour obtenir vos données dans un format lisible par l'homme.
vérifiez ici
Il contient exactement le même lien et en grande partie le même code que j'ai posté trois mois plus tôt.
OriginalL'auteur
Je ne peux pas comprendre vos besoins, mais les données de votre journal peut être extraite par des outils tels que Lumigent LogExplorer. Je ne sais rien à ce sujet il y a un autre moyen de faire ce que vous voulez.
OriginalL'auteur Alex_L
L'étape 1.
CREATE TABLE #hex(
[hex_Value] varbinary NULL
)
L'étape 2.
Insérer des données dans la table, par Exemple
insérez dans #les valeurs hexadécimales(0x300008000F000000030000020015001b00536976754d79736f7265)
L'étape 3.
SÉLECTIONNEZ LTRIM(RTRIM(CONVERT(VARCHAR(max),REPLACE(hex_Value, 0x00, 0x20))))
DE #hex
Pour plus d'Informations, allez sur ce lien
OriginalL'auteur Masum