Anda dapat menggunakan sys.fn_dblog
untuk membaca log transaksi. Contoh di bawah.
SELECT [RowLog Contents 0],
[RowLog Contents 1],
[Current LSN],
Operation,
Context,
[Transaction ID],
AllocUnitId,
AllocUnitName,
[Page ID],
[Slot ID]
FROM sys.fn_dblog(NULL,NULL)
WHERE Context IN ('LCX_MARK_AS_GHOST', 'LCX_HEAP', 'LCX_CLUSTERED')
AND Operation IN ('LOP_DELETE_ROWS', 'LOP_INSERT_ROWS')
Untuk delete
dan insert
operasi IIRC [RowLog Contents 0]
berisi seluruh baris yang dimasukkan dan dihapus. Pembaruan sedikit lebih rumit karena hanya sebagian baris yang dapat dicatat.
Untuk memecahkan kode format baris ini, Anda perlu memahami bagaimana baris disimpan secara internal di SQL Server. Buku Microsoft SQL Server 2008 Internal mencakup ini dalam beberapa detail. Anda juga dapat mengunduh SQL Server Internals Viewer untuk membantu dalam hal ini (Dan saya percaya kode sumber untuk Mark Rasmussen Orca MDF tersedia juga yang mungkin memiliki beberapa kode untuk memecahkan kode format baris internal).
Untuk contoh melakukan ini di TSQL, lihat postingan blog ini yang menunjukkan bahwa sangat mungkin untuk mengekstrak informasi yang berguna dari log selama tujuan proyek terbatas. Menulis pembaca log lengkap yang dapat mengatasi perubahan skema pada objek dan hal-hal seperti kolom yang jarang (dan indeks penyimpanan kolom di versi berikutnya) kemungkinan akan menjadi pekerjaan yang sangat berat.