我在我的wcf服务中使用TransactionScope类将我的wcf服务中的任何数据库操作分组到一个事务中。我很使用sql server更改数据捕获来捕获有问题表上的所有更改。链接TransactionScope TransactionInformation事务标识符与sql服务器事务ID
我希望能够报告所有数据库cdc更改回到我的事务范围创建的原始服务操作。
所以说我有一个名为SavePolicy的服务操作,它实际上是在一个事务范围内更新3个数据库。在该范围内,我可以使用以下代码获得交易ID:
TransactionInformation info = Transaction.Current.TransactionInformation;
transactionId = Guid.Empty == info.DistributedIdentifier ? info.LocalIdentifier : info.DistributedIdentifier.ToString();
此ID是否存储在SQL Server的任何位置?我正在使用实体框架和存储过程来定期进行crud操作。
我可以使用cdc函数(如fn_cdc_get_all_changes_)获取所有更改数据,并且cdc.lsn_time_mapping表中有一个事务ID,但它看起来不是这样的。
我希望我可以存储c#事务范围以及数据库事务ID或日志序列号和服务方法名称,以便我可以通过服务操作名称报告cdc更改。
任何帮助或想法都会很棒! Ryan
是的,我正在尝试创建该信息。实际上,我们已经在我们自己的表格以及cdc中手动存储了交易历史。事实上,我们的DataWareHouse消费增加了CDC。我希望在更新时应用程序可以存储事务和操作名称,将其链接到CDC数据,而不是添加其他历史记录。要报告,我们稍后将查找交易号码并将其加入cdc。 – quigley