Membaca SQL Server Transaction Log

SQL Server memiliki dua jenis log, yaitu error log dan transaction log. Error log berisi infromasi error yang tejadi dalam basis data. Biasanya error log pada SQL Server dapat diakses melalui Object Explorer > Instance > Management > SQL Server Logs. Log tersebut terdiri dari beberapa archive dengan jumlah yang dapat ditentukan.

Sedangkan transaction log adalah log yang mencatat transaksi yang berlangsung dalam sebuat basis data. Transaction log biasanya disimpan dalam format ldf. Setiap basis data akan memiliki file ldf masing-masing. Transaction log tersebut biasanya digunakan untuk melakukan recovery atau sebagai backup dari basis data. Namun tidak menutup kemungkinan untuk dapat membaca transaction log tersebut dengan menggunakan sql statement, yakni dengan menggunakan sys.fn_dblog. Berikut ini contoh penggunaannya.


Select 
	b.Description,
	d.AllocUnitName,
	b.[Transaction ID],
	d.name,
	d.Operation,
	b.[Transaction Name],
	b.[Begin Time],
	c.[End Time]
from (
	Select 
		Description,
		[Transaction Name],
		Operation,
		[Transaction ID],
		[Begin Time]
	FROM sys.fn_dblog(NULL,NULL) 
	where Operation like 'LOP_begin_XACT'
) as b
inner join (
	Select 
		Operation,
		[Transaction ID],
		[End Time]
	FROM sys.fn_dblog(NULL,NULL)
	where Operation like 'LOP_commit_XACT'
) as c
on c.[Transaction ID] = b.[Transaction ID]
inner join (
	select 
		x.AllocUnitName,
		x.Operation,
		x.[Transaction ID],
		z.name
	FROM sys.fn_dblog(NULL,NULL) x
	inner join sys.partitions y
	on x.PartitionId = y.partition_id
	inner join sys.objects z
	on z.object_id = y.object_id
	where z.type != 'S'
)as d
on d.[Transaction ID] = b.[Transaction ID]
order by b.[Begin Time] ASC

Dengan menggunakan kode tersebut, setiap transaksi yang terjadi dalam basis data serta waktu terjadinya dapat dilihat. Namun untuk isi dari setiap tidak dapat dilihat.

Demikian infonya, semoga membantu.

Komentar

Postingan populer dari blog ini

Arsitektur Audit Basis Data