Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 链接TransactionScope TransactionInformation事务标识符与sql server事务ID_C#_Sql Server_Transactions_Transactionscope_Cdc - Fatal编程技术网

C# 链接TransactionScope TransactionInformation事务标识符与sql server事务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

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

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

假设我有一个名为SavePolicy的服务操作,它实际上在一个事务范围内进行3db更新。在该范围内,我可以使用如下代码获取事务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_映射表中有一个事务id,但这看起来不是一回事

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

任何帮助或想法都会很好!
Ryan

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

是的,我正在尝试创建这些信息。事实上,我们已经在自己的表和cdc中手动存储了事务历史记录。CDC是在我们的数据仓库消耗之后添加的。我希望在更新时,应用程序可以存储一个事务和操作名,将其链接到CDC数据,而不是添加另一个历史记录。为了报告,我们稍后将查找事务号并将其加入cdc。