如何在应用程序代码中获取“start_lsn”值
-
13-12-2019 - |
题
数据库通过“更改数据捕获”机制来跟踪所有更改。我需要添加有关进行这些更改的用户的其他信息。 以下用户不是SQL Server用户。安全授权通过外部机制执行。
我想添加一个辅助表,其中包含列“ start_lsn ”和“ userid ”,以将事务与授权用户相关联。 有没有办法确定“ start_lsn ”值,它对应于在应用程序代码中执行的当前事务?
解决方案
目前,我发现了以下解决方案:
1)
-
创建一个表(例如,“useractivity”),它具有“id”和“userid”列;
-
使用“id”列作为主键;
-
为此表启用CDC选项。
2)
-
在特定事务期间将新数据记录添加到此表中,其中包含当前“userid”:
-
begin 独占事务;
-
-
执行“数据操纵”;
-
将关于“userid”的信息插入“useractivity”表中。
与事务范围 ;
包装所有数据修改操作由于事务是独占的,并且所有操作都在单个事务范围内进行,“last_lsn”(“start_lsn”)值是相同的。
之后,使用加入运算符,使用数据操作信息合并来自“useractivity”表的数据。
不隶属于 StackOverflow