日期:2014-05-17  浏览次数:20626 次

跨服务器事务访问报DTC错误??
一个存储过程,写法如下:
begin transaction  
set nocount on
insert T1 aa values (1)
update Pc.Db1.dbo.T2 set b=2 where cc=1

if(@ExecFlag<>1)
begin
rollback transaction
end
else
begin
commit transaction
end

其中update Pc.Db1.dbo.T2 set b=2 where cc=1 其中T2是另外一台服务器PC上数据库的表,执行该存储过程报错: 导入 Microsoft 分布式事务处理协调器(MS DTC)事务失败: 0x8004d00e(XACT_E_NOTRANSACTION)
如果在同一台服务器不同数据库上执行正常;
该问题如何解决?

------解决方案--------------------
这里有方法,看不懂的话先执行那些语句http://blogs.msdn.com/b/distributedservices/archive/2010/03/25/import-of-microsoft-distributed-transaction-coordinator-ms-dtc-transaction-failed-0x8004d00e-xact-e-notransaction.aspx
------解决方案--------------------
主要是MS DTC端口的通讯问题。
你要检查一下端口。例如,你的SQL Server是否已经群集化了,Windows 2008的群集使用MSDTC有点特殊。
或者你的防火墙端口是否开放,MSDTC可能会使用一些动态端口。