我正在审计触发器中从 sys.dm_tran_current_transaction 捕获 transaction_id。我想知道的是transaction_id的唯一性。文档只说“当前快照的事务ID”。
我只能假设这个“ID”稍后会被重复使用,但我希望得到一些确认。
最佳答案
@abcdefghi 的答案很好,但只是补充一下;
- Transaction_id 在一笔交易中是相同的,
- 在显式事务之外,transaction_id 在每个批处理上都会更新,
- transaction_id 会在服务器重置时重置,因此随着时间的推移,您会遇到相同的 transaction_id。
由于这种情况,这会导致您无法在审计表中使用 transaction_id ;
插入的审核记录的 transaction_id = 42 sql服务器重置 ...执行了41个新批处理... 使用 transaction_id = 42 插入审核记录
此外,您不能像时间戳一样使用 transaction_id(较高的值并不意味着稍后的更改_,并且您不能说相同的 ID 意味着相同的交易。
关于sql-server - sys.dm_tran_current_transaction。 transaction_id 的唯一性如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002700/