sql-server - sys.dm_tran_current_transaction。 transaction_id 的唯一性如何

标签 sql-server

我正在审计触发器中从 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/

相关文章:

asp.net - 如何设计 "Country"、 "Province"和 "City"表?

java - Hibernate slqjdbc4 列带空格

sql-server - 具有 DateTimeOffset 的执行计划行为

sql - 为结果表提供列名

sql-server - 想要从 txt 文件批量导入 SQL Server 2012 中的临时表

sql - 每个月的顶部和底部销售

sql-server - 在 PERL 中从 Windows 访问 Microsoft SQL Server

PHP 字节数组转 Base64(来自 Mssql 的字节数组)

c# - 应用程序在 Linux 上运行时连接到 MSSQL Server 2017 超时

sql-server - 更改基础表后从表值函数中删除列