如何在应用程序代码中获取“start_lsn”值

时间:2012-10-03 07:16:46

标签: sql-server sql-server-2008-r2 cdc

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

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

1 个答案:

答案 0 :(得分:1)

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

1)

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

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

  • 为此表启用CDC选项。

2)

  • 使用交易范围包裹所有数据修改操作;

  • 在特定交易期间使用当前“userId”在此表格中添加新数据记录:

    • 开始独占交易;

    • 执行“数据操作”;

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

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

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