Lesen von SQL Server transaction log
Wie wir Lesen können SQL Server-Transaktionsprotokolle, ich weiß, die mithilfe der DBCC log (Datenbank,4) und wird es erzeugt log-Ausgabe möchte ich nun zu entschlüsseln-Log-Datensatz die hex-format.
0x00003E001C000000A500000001000200be040000000006021d0000000100000018000000 (nur einen Teil der Daten)
gibt es eine Methode, es zu Lesen im text-format oder konvertieren des hex-Daten, text.ich will ein tool, das die Protokolle Lesen.third-party-tools sind verfügbar ich.e ApexSQL aber Sie sind kostenpflichtige tools.
- Zu tun, was genau?
- mögliche Duplikate von SQL Server Transaction Log Explorer/Analyzer
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
sys.fn_dblog
Lesen des Transaktionsprotokolls. Beispiel unten.Für eine
delete
undinsert
Betrieb IIRC die[RowLog Contents 0]
enthält die gesamte Zeile eingefügt und gelöscht werden. Updates sind ein bisschen mehr kompliziert, dass nur ein Teil einer Zeile protokolliert werden können.Decodieren diese Zeile format, das Sie brauchen, um zu verstehen, wie die Zeilen gespeichert werden intern in SQL Server. Das Buch Microsoft SQL Server 2008 Internals deckt dieses in einigen Details. Sie können auch download der SQL Server Internals Viewer zu helfen in dieser Hinsicht (Und ich glaube, dass der source-code für Mark Rasmussen's Orca MDF verfügbar ist, zu dem wahrscheinlich einige code zum Dekodieren der internen row-format).
Für ein Beispiel dies zu tun, in TSQL sehen in diesem blog-post, die zeigt, dass es durchaus möglich zu extrahieren nützlicher Informationen aus dem log, solange das Ziel des Projekts ist begrenzt. Schreiben Sie eine vollständige geblasen log-Leser, die gewachsen waren, schema-änderungen in die Objekte und Dinge wie Spalten mit geringer Dichte (und column store Indizes in der nächsten version) wäre wahrscheinlich eine Menge Arbeit aber.
Gibt es mehrere SQL-Server-Funktionen und-Befehle (z.B. fn_dblog, fn_dump_dblog, und DBCC PAGE), die potenziell ein Weg, um die LDF-Datei Inhalt. Jedoch, die wesentlichen Kenntnisse von T-SQL erforderlich ist, um Sie zu benutzen, einige sind nicht dokumentiert, und die Ergebnisse, die Sie bieten, sind nur schwer umgewandelt werden in ein menschenlesbares format. Im folgenden werden die Beispiele von anzeigen von LDF-Datei-Inhalt mit SQL-Server-Funktionen und-Befehle:
1 - Hier ist ein Beispiel mit fn_dblog Lesen einer online-Transaktion-log, mit einem Ergebnis von 129 Spalten (nur 7 gezeigt hier)
2 - Die fn_dump_dblog Funktion wird verwendet, um zu Lesen Transaktionsprotokoll nativen oder nativ-komprimierte backups. Das Ergebnis ist ähnlich:
Leider keine offizielle Dokumentation ist verfügbar für fn_dblog und fn_dump_dblog Funktionen. Übersetzen Sie die Spalten, die Sie brauchen, vertraut zu sein mit der inneren Struktur und Daten-format-flags und Ihre gesamte Anzahl in einer Zeile Daten
3 - SEITE DBCC verwendet wird, um den Inhalt Lesen von online-Datenbank-Dateien – MDF-und LDF. Das Ergebnis ist eine hexadezimale Ausgabe, die, es sei denn, Sie haben einen hex-editor, wird schwierig zu interpretieren
erhalten Sie Transaktion im Zusammenhang alle Informationen, die unter Verwendung der obigen Abfrage..wo der Protokoll-Datensatz-Spalte zeigt den aktuellen Datensatz, die im Hexadezimal-format..
überprüfen Sie diesen link, um Ihre Daten in lesbarer Form.
überprüfen Sie hier
Schritt 1.
CREATE TABLE #hex(
[hex_Value] varbinary NULL
)
Schritt 2.
Einfügen von Daten in die Tabelle, Beispiel
insert into #hex-Werte(0x300008000F000000030000020015001b00536976754d79736f7265)
Schritt 3.
SELECT LTRIM(RTRIM(CONVERT(VARCHAR(max),ERSETZEN(hex_Value, 0x00, 0x20))))
AUS #hex
Für weitere Informationen gehen Sie über diesen link
Versuchen.
Können Sie die Datenbank-Transaktion (wie insert, update, delete), Transaktion und den Namen des Objekts.
Hoffe die können helfen.
Ich kann nicht verstehen, Ihre Bedürfnisse, aber die Daten aus deinem log extrahiert werden können durch tools wie Lumigent LogExplorer. Ich weiß nicht, nichts über es einen anderen Weg, das zu tun, was Sie wollen.