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