环境:
Server :Windows  2000 Server;SQL Server 2000
Client:Windows 2000 Professional;.NET Framework 1.1
我做了一个这样的COM+组件,如下定义
数据访问:
[Transaction(TransactionOption.Supported)]
[ClassInterface(ClassInterfaceType.None)]
[ConstructionEnabled]
[Serializable]
public class DataAccessHelper:ServicedComponent
另外,在另外一个地方定义了一个业务访问(也是一个COM+组件),调用数据访问的方法。
在实际运行时,启用了事务。但是,在这种情况下,会出现一个错误,就是在打开SQL Server连接时报“在分布式事务中登记时出错”。
特别的,这段代码在XP SP2下运行正常。

解决方案 »

  1.   

    下列任一条件没有满足就会出现该错误:1. 必须启动MSDTC服务。(sqlserver的服务)   2. 所涉及的Server之间如果存在网关、防火墙,需要开启TCP 135端口。    分布式事务需要使用这个端口通讯。
        3. 如果Server之间跨网段,则Server之间需要能互相PING到机器名(而不是IP地址)。
        如果相互PING机器名有问题,修改system32/driver/etc目录下的hosts文件
    4 察看dcomcnfg中察看msdtc的安全配置选项,保证双方都可以交互