数据库通过“更改数据捕获”机制跟踪所有更改。我需要添加有关进行这些更改的用户的其他信息。以下用户不是 SQL Server 用户。安全授权是通过外部机制执行的。
我想添加一个带有“ start_lsn ”和“ userId ”列的帮助表,以将事务与授权用户相关联。有没有办法确定“ start_lsn ”值,它对应于应用程序代码中执行的当前事务?
数据库通过“更改数据捕获”机制跟踪所有更改。我需要添加有关进行这些更改的用户的其他信息。以下用户不是 SQL Server 用户。安全授权是通过外部机制执行的。
我想添加一个带有“ start_lsn ”和“ userId ”列的帮助表,以将事务与授权用户相关联。有没有办法确定“ start_lsn ”值,它对应于应用程序代码中执行的当前事务?
目前,我找到了以下解决方案:
1)
再创建一个表(例如,“UserActivity”),其中包含“ID”和“userId”列;
使用“ID”列作为主键;
为此表启用 CDC 选项。
2)
用事务范围包装所有数据修改操作;
在特定事务期间使用当前“userId”将新数据记录添加到此表中:
开始独家交易;
执行“数据操作”;
将有关“userId”的信息插入“UserActivity”表。
由于事务是独占的并且所有操作都在单个事务范围内进行,因此“last_lsn”(“start_lsn”)值是相同的。
之后,使用 JOIN 运算符,将“UserActivity”表中的数据与数据操作信息合并。