C# 链接TransactionScope TransactionInformation事务标识符与sql server事务ID
我在wcf服务中使用TransactionScope类将wcf服务中的任何数据库操作分组到一个事务中。我正在使用SQLServer变更数据捕获来捕获相关表上的所有变更 我希望能够将所有数据库cdc更改报告回创建事务作用域的原始服务操作 假设我有一个名为SavePolicy的服务操作,它实际上在一个事务范围内进行3db更新。在该范围内,我可以使用如下代码获取事务Id:C# 链接TransactionScope TransactionInformation事务标识符与sql server事务ID,c#,sql-server,transactions,transactionscope,cdc,C#,Sql Server,Transactions,Transactionscope,Cdc,我在wcf服务中使用TransactionScope类将wcf服务中的任何数据库操作分组到一个事务中。我正在使用SQLServer变更数据捕获来捕获相关表上的所有变更 我希望能够将所有数据库cdc更改报告回创建事务作用域的原始服务操作 假设我有一个名为SavePolicy的服务操作,它实际上在一个事务范围内进行3db更新。在该范围内,我可以使用如下代码获取事务Id: TransactionInformation info = Transaction.Current.TransactionInfo
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_映射表中有一个事务id,但这看起来不是一回事
我希望我可以将c#事务范围与数据库事务id或日志序列号以及服务方法名称一起存储,这样我就可以按服务操作名称报告cdc更改
任何帮助或想法都会很好!
Ryan提交事务时,事务id未存储在sql server中。听起来应用程序需要一些额外的跟踪,而数据模型没有这些信息。是的,我正在尝试创建这些信息。事实上,我们已经在自己的表和cdc中手动存储了事务历史记录。CDC是在我们的数据仓库消耗之后添加的。我希望在更新时,应用程序可以存储一个事务和操作名,将其链接到CDC数据,而不是添加另一个历史记录。为了报告,我们稍后将查找事务号并将其加入cdc。