2

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

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

4

1 回答 1

1

目前,我找到了以下解决方案:

1)

  • 再创建一个表(例如,“UserActivity”),其中包含“ID”“userId”列;

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

  • 为此表启用 CDC 选项。

2)

  • 事务范围包装所有数据修改操作;

  • 在特定事务期间使用当前“userId”将新数据记录添加到此表中:

    • 开始独家交易;

    • 执行“数据操作”;

    • 将有关“userId”的信息插入“UserActivity”表。

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

之后,使用 JOIN 运算符,将“UserActivity”表中的数据与数据操作信息合并。

于 2012-10-12T15:11:39.317 回答