Microsoft分布式事务处理协调器(MS DTC)已取消分布式事务

问题描述 投票:1回答:1

背景:我们有一个被开发under.NET Framework 2.0的网站,它使用与SQL Server 2005创建的数据库,我们也有在.NET框架4.0下开发一个网站,这个软件需要使用SQL Server 2008创建的数据库我们挂两个数据库(从SQL Server 2005到SQL Server 2008)创建的“SQL Server 2005数据库的链接服务器”。

场景:当我们在SQL Server 2005中托管,我们有交易的这个序列在数据库中创建一个记录:将记录到的SQL Server 2005数据库托管表。该插入插入后执行的触发器。触发器里面,我们执行存储过程(在SQL Server 2008数据库托管),并且此存储过程是通过使用“连接服务器”执行。此存储过程执行插入在SQL Server 2008数据库托管的表。如果我们手动执行插入Sql Server中使用SQL Server Management Studio中2005年2005数据库,一切都得到很好执行主办的表,但是如果我们试图创建一个使用该网站的UI记录(.NET 2005),我们得到这个错误:

当前事务无法提交,无法支持写入日志文件的操作。回滚事务。 Microsoft分布式事务处理协调器(MS DTC)已取消分布式事务。

有谁知道发生了什么事?

sql-server-2008 sql-server-2005 .net-2.0 asp.net-2.0 linked-server
1个回答
0
投票

我觉得很危险的触发器来执行这样的代码。我会考虑取消触发并创建一个执行描述的动作过程。

并测试一切正常,你应该调用DML操作在一个事务中两台服务器上,或者你应该明确地通过调用“begin distributed tran”开头的分布式事务。如果你只是更新另一台服务器上的东西(只有1个动作)你不使用分布式事务和测试是不正确的。

© www.soinside.com 2019 - 2024. All rights reserved.