How to get all the transaction logs (insert update delete) for a specific table in SQL Server 2008

hasan lamaa picture hasan lamaa · Oct 16, 2011 · Viewed 29.6k times · Source

I want to get all the transactions applied on a specific table in SQL Server 2008.

I found the last time a table was updated using this script:

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'DBName')
AND OBJECT_ID=OBJECT_ID('tableName')

I want to know all the transactions (Inserts, Updates, Deletes) for that table, and their datetime, and the query applied.

What is the best way to do this?

Answer

Vali Alexandrescu picture Vali Alexandrescu · Sep 17, 2013

The only way to do this in a reasonable amount of time is to use a third party tool(as Martin said in first comment) such as ApexSQL Log that can read transaction log and get the information you need.

Note that in order for this to work your database has to be in a full recovery mode because that’s when SQL Server logs full transaction details that can be reconstructed later.

Another option is to investigate how to use undocumented fn_dblog function but this will take you a lot more time and you won’t be able to read detached logs or transaction log backups.