使用擴展事件記錄所有內容。下面的腳本日誌回滾,但你可以添加BEGIN TRANSACTION事件或其他任何東西:
CREATE EVENT SESSION [rollback] ON SERVER
ADD EVENT sqlserver.rollback_tran_completed,
ADD EVENT sqlserver.rollback_tran_starting
ADD TARGET package0.event_file(SET filename=N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\rollback.xel')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
然後你就可以用查詢的結果:
SELECT * FROM sys.fn_xe_file_target_read_file('C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\rollback.xel', null, null, null)
我會更新我的答案。我正在尋找C#解決方案。我不希望將其記錄在數據庫上。 – Rob