Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Baca log transaksi SQL Server

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membandingkan dua bitmask dalam SQL untuk melihat apakah ada bit yang cocok

  2. Membuat Model Kerangka Entitas menjangkau banyak basis data

  3. Pernyataan insert exec tidak dapat disarangkan

  4. Apa batasan basis data?

  5. Manajemen koneksi SQL Server dengan C#