Interrogating the Transaction Log
description
Transcript of Interrogating the Transaction Log
Interrogating the Transaction Log
Or, The Transaction Log: Why You Can’t Run Your Database Without It
What We’ll Cover
ACID Properties Transactions Write-ahead Logging Log Space Reservation Reading the Log with fn_dblog Identifying Active Transactions Finding Log Records Associated with
Active Transactions
Database 101 - ACID Properties Atomicity Consistency Isolation Durability
Human sacrifice, dogs and cats living together... mass hysteria!
Transactions and Write-Ahead Logging What is a transaction? Explicit v. Implicit Transactions Write-ahead logging Roll back and roll forward
Log Space Reservation
SQL Server uses log space for transaction records
Additional space is reserved for potential rollback activity
Committed transaction releases reserved space
Log Space Reservation Demo SMALLER TRANSACTIONS ARE
BETTER!
Reading the Transaction Log Table-based function that allows the
transaction log to be read Takes 2 parameters, starting and
ending log sequence numbers (LSN) SELECT * FROM fn_dblog(NULL,NULL)
returns the contents of the log
fn_dblog demo
sys.dm_tran_database_transactions Returns information about active
transactions Results contain the begin and end
LSN for each transaction
Finding Log Records for Active Transactions – Attempt #1
Both the DMV and function contain a transaction_id
The DMV id is hexadecimal and the function id is decimal, so converting one of them should work, right?
Image Source - http://4.bp.blogspot.com/-DY_k_dCp9EE/TvzOLaf17JI/AAAAAAAABBM/dBff_mOtNws/s1600/wrong+answer.jpg
Finding Log Records for Active Transactions – Failed Attempt #1
Converting the transaction IDs from either source did not result in a match
After several attempts to make it work (octal, double and add 30, multiply by 9/5 and add 32) I wrote Paul Randal
His response? “They don’t match. It’s annoying.”
Finding Log Records for Active Transactions – Attempt #2
Both the DMV and the function contain begin and end LSNs
The function returns colon-delimited hex LSNs (0000001a:000027a5:0001)
The DMV returns a decimal value (26000001014900001)