dev · · 09:07 · 2 min de citit
Recuperarea Rândurilor Șterse din SQL Server Fără CDC sau Audit Folosind LogCarver
A fost dezvoltat un nou instrument numit LogCarver pentru a recupera rândurile șterse din SQL Server prin analiza directă a jurnalului de tranzacții, ocolind necesitatea funcțiilor CDC sau Audit activate anterior. Acest instrument reconstruiește istoricul tabelelor, inclusiv operațiunile INSERT, UPDATE și DELETE, prin inginerie inversă a funcției nedocumentate fn_dblog.
Acest articol detaliază crearea LogCarver, un instrument nou conceput pentru a recupera rândurile șterse din bazele de date SQL Server fără a necesita activarea prealabilă a funcțiilor Change Data Capture (CDC), Change Tracking sau Audit. Autorul subliniază că, în multe scenarii din lumea reală, în special în companiile mici și mijlocii, aceste măsuri preventive nu sunt adesea implementate până când se detectează pierderea datelor. LogCarver umple acest gol prin utilizarea jurnalului de tranzacții al SQL Server, care înregistrează în mod inerent toate modificările, și prin abordarea provocării funcției `fn_dblog`, în mare parte nedocumentată, al cărei format de ieșire a fost supus ingineriei inverse prin experimentare extinsă.
Nucleul tehnic al LogCarver implică citirea directă din `fn_dblog` pentru a reconstrui istoricul complet al unei tabele, incluzând INSERT-uri, UPDATE-uri (capturând valorile înainte și după) și DELETE-uri. Acest proces permite generarea de instrucțiuni SQL analizabile pentru anularea sau reluarea modificărilor. Procesul de dezvoltare a întâmpinat și a rezolvat două bug-uri semnificative care au apărut doar atunci când au fost testate pe date reale. Primul bug a implicat excluderea incorectă a datelor din tabelele Heap (tabele fără un index clusterizat) din cauza unei erori de filtrare, iar al doilea a provenit dintr-o logică incorectă de potrivire a tabelelor atunci când tabelele aveau indecși suplimentari, ducând la amestecarea unor înregistrări de administrare a bazei de date nerelevante.
Aceste bug-uri au fost identificate și remediate prin examinarea meticuloasă a ieșirii brute din `fn_dblog` și prin verificarea încrucișată cu comportamentul real al instanței SQL Server, mai degrabă decât prin bazarea pe documentație. Remediile au implicat filtrare precisă și construcția corectă a `AllocUnitName` pe baza informațiilor din cataloagele de sistem. Deși LogCarver suportă în prezent decodarea tipurilor de date comune, unele tipuri mai puțin frecvente și gestionarea operațiunilor `TRUNCATE TABLE` rămân limitări actuale. Instrumentul este lansat sub licența MIT, oferind o soluție valoroasă pentru recuperarea datelor în medii în care mecanismele tradiționale de jurnalizare nu au fost pre-configurate.
$ sursa --originală
dev.to
Rezumat realizat de Sudofeed pe baza articolului original. Drepturile asupra conținutului aparțin sursei originale.