数据库通过“更改数据捕获”机制来跟踪所有更改。我需要添加有关进行这些更改的用户的其他信息。 以下用户不是SQL Server用户。安全授权通过外部机制执行。

我想添加一个辅助表,其中包含列“ start_lsn ”和“ userid ”,以将事务与授权用户相关联。 有没有办法确定“ start_lsn ”值,它对应于在应用程序代码中执行的当前事务?

有帮助吗?

解决方案

目前,我发现了以下解决方案:

1)

  • 创建一个表(例如,“useractivity”),它具有“id”“userid”列;

  • 使用“id”列作为主键;

  • 为此表启用CDC选项。

2)

    事务范围 ;

    包装所有数据修改操作

  • 在特定事务期间将新数据记录添加到此表中,其中包含当前“userid”

    • begin 独占事务;

    • 执行“数据操纵”;

    • 将关于“userid”的信息插入“useractivity”表中。

由于事务是独占的,并且所有操作都在单个事务范围内进行,“last_lsn”“start_lsn”)值是相同的。

之后,使用加入运算符,使用数据操作信息合并来自“useractivity”表的数据。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top