使用扩展事件记录所有内容。下面的脚本日志回滚,但你可以添加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