2

我在我的 wcf 服务中使用 TransactionScope 类将我的 wcf 服务中的任何数据库操作分组到一个事务中。我正在使用 sql server 更改数据捕获来捕获相关表上的所有更改。

我希望能够将所有数据库 cdc 更改报告回创建我的事务范围的原始服务操作。

所以说我有一个名为 SavePolicy 的服务操作,它实际上在一个事务范围内执行 3 db 更新。在该范围内,我可以使用以下代码获取事务 ID:

TransactionInformation info = Transaction.Current.TransactionInformation;                
transactionId = Guid.Empty == info.DistributedIdentifier ? info.LocalIdentifier : info.DistributedIdentifier.ToString();

这个 id 是否存储在 sql server 中的任何位置?我正在使用实体框架和存储过程来执行常规的 crud 操作。

我可以使用 fn_cdc_get_all_changes_ 之类的 cdc 函数获取所有更改数据,并且 cdc.lsn_time_mapping 表中有一个事务 ID,但看起来这不是一回事。

我希望我可以将 c# 事务范围与数据库事务 ID 或日志序列号以及服务方法名称一起存储,以便我可以按服务操作名称报告 cdc 更改。

任何帮助或想法都会很棒!瑞安

4

1 回答 1

0

提交事务时,事务 id 不存储在 sql server 中。听起来更像是应用程序需要一些额外的跟踪,而数据模型没有这些信息。

于 2014-01-18T03:00:05.580 回答