Lesen Sie das SQL Server-Transaktionslog

8

Wie können wir SQL Server Transaktionsprotokolle lesen, ich weiß, DBCC-Protokoll (Datenbank, 4) zu verwenden, und es wird jetzt Log-Ausgabe erzeugen, ich möchte Log-Record dekodieren, das ist Hex-Format.

0x00003E001C000000A500000001000200BE040000000006021D0000000100000018000000 (nur ein Teil der Daten)

gibt es irgendeine Methode, um es im Textformat zu lesen oder die Hex-Daten in Text zu konvertieren.Ich möchte ein Werkzeug, das Logs lesen kann. Drittanbieter-Tools sind verfügbar, d. h. ApexSQL, aber sie sind kostenpflichtige Tools.

    
Nasir Mahmood 26.01.2012, 06:10
quelle

5 Antworten

11

Sie können sys.fn_dblog verwenden, um das Transaktionslog zu lesen. Beispiel unten.

%Vor%

Für eine delete und insert Operation IIRC enthält [RowLog Contents 0] die gesamte Zeile eingefügt und gelöscht. Updates sind etwas komplizierter, da nur eine Teilzeile protokolliert werden kann.

Um dieses Zeilenformat zu dekodieren, müssen Sie verstehen, wie Zeilen intern in SQL Server gespeichert werden. Das Buch Microsoft SQL Server 2008 Internals deckt dies ab etwas Detail. Sie können auch den SQL Server Internal Viewer herunterladen, um in dieser Hinsicht zu helfen (und ich glaube, der Quellcode für Mark Rasmussen Orca MDF ist ebenfalls verfügbar, das vermutlich über Code verfügt, um das interne Zeilenformat zu dekodieren."

Ein Beispiel dafür in TSQL finden Sie in Blogpost , der zeigt, dass es durchaus möglich ist, nützliche Informationen aus dem Protokoll zu extrahieren, solange das Projektziel begrenzt ist. Das Schreiben eines vollständigen Protokolllesers, der mit Schemaänderungen in den Objekten und Dingen wie spärlichen Spalten (und Spaltenspeicherindizes in der nächsten Version) zurechtkommen könnte, würde jedoch sehr viel Arbeit kosten.

    
Martin Smith 26.01.2012, 12:41
quelle
2

Es gibt mehrere SQL Server-Funktionen und -Befehle (z. B. fn_dblog, fn_dump_dblog und DBCC PAGE), die möglicherweise eine Möglichkeit bieten, LDF-Dateiinhalte anzuzeigen. Für die Verwendung von T-SQL sind jedoch erhebliche Kenntnisse erforderlich, einige sind undokumentiert, und die von ihnen gelieferten Ergebnisse lassen sich nur schwer in ein für Menschen lesbares Format konvertieren. Im Folgenden finden Sie Beispiele zum Anzeigen von LDF-Dateiinhalten mithilfe von SQL Server-Funktionen und -Befehlen:

1 - Hier ist ein Beispiel mit fn_dblog zum Lesen eines Online-Transaktionslogs mit einem Ergebnis von 129 Spalten (nur 7 hier gezeigt)

2 - Die Funktion fn_dump_dblog wird verwendet, um native oder nativ komprimierte Backups von Transaktionsprotokollen zu lesen. Das Ergebnis ist ähnlich:

Leider ist keine offizielle Dokumentation für die Funktionen fn_dblog und fn_dump_dblog verfügbar. Um die Spalten zu übersetzen, müssen Sie sich mit der internen Struktur und dem Datenformat, den Flags und deren Gesamtanzahl in einer Zeile vertraut machen

3 - DBCC PAGE wird verwendet, um den Inhalt von Datenbank-Online-Dateien - MDF und LDF - zu lesen. Das Ergebnis ist eine hexadezimale Ausgabe, die, wenn Sie keinen Hex-Editor haben, schwierig zu interpretieren ist

    
Ivan Stankovic 04.10.2013 10:15
quelle
1
%Vor%

Sie erhalten transaktionsbezogene Informationen, die obige Abfrage verwenden .. wo die Protokolldatenspalte Ihren tatsächlichen Datensatz im Hexadezimalformat anzeigt.

Klicken Sie auf diesen Link, um Ihre Daten in ein für Menschen lesbares Format zu bringen. hier

überprüfen     
user2323876 26.04.2013 12:53
quelle
0

Ich kann Ihre Anforderungen nicht verstehen, aber die Daten aus Ihrem Protokoll können mit Tools wie Lumigent LogExplorer extrahiert werden. Ich weiß nicht, dass es eine andere Möglichkeit gibt, das zu tun, was du willst.

    
Alex_L 26.01.2012 06:35
quelle
0

Schritt 1. Tabelle erstellen #hex ( [hex_Value] varbinary NULL )

Schritt 2. Fügen Sie Daten in die Tabelle ein, Beispiel Einfügen in #hex-Werte (0x300008000F000000030000020015001B00536976754D79736F7265)

Schritt 3. SELECT LTRIM (RTRIM (KONVERT (VARCHAR (max), ERSETZEN (hex_Value, 0x00, 0x20)))) VON #hex

Für weitere Informationen gehen Sie durch diesen Link

    
Masum 04.01.2017 09:17
quelle