• 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。


    今天写ASP.NET程序,在网页后台的c#代码里写了个事务,事务内部对一张表进行批量插入,对另外一张表进行查询与批量插入。

    结果第二张表查询后foreach迭代操作时报错:已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

    我的开发环境:开发机:WINXP,vs2010,IIS, 服务器:WIN2003,VS2010,SQL2005

    解决:需要在开发机和服务器都添加MSDTC事务管理器(我直接操作Windows xp配置MSDTC的方法),具体如下:

    1、删除注册表中的键:
    1.HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSDTC
    2.HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTC
    4、停止MSDTC服务:net stop msdtc
    5、卸载MSDTC服务:msdtc -uninstall
    6、重新安装MSDTC服务:msdtc -install  

    操作系统最好不要用ghost安装。


    启用网络Com+ 访问
    启用网DTC
    也一起安装一下


    网络MSDTC配置方法我们有时会发现一下问题:已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。可以由本文解决。一、启用网络 DTC 访问的步骤

    启用网络DTC是分布式数据库事物控制的必要条件。设置过程应依下面步骤进行。

    1)      单击“开始”,指向“控制面板”,然后单击“添加或删除程序”;

    2)      单击“添加/删除 Windows 组件”;

    3)      选择“应用程序服务器”,然后单击“详细信息”;

    4)      选择“启用网络 DTC 访问”, 网络管理 、网络事务、XA 事务。另外,DTC 登录帐户一定要设置为“NT AuthorityNetworkService”,并且事务管理器通讯不要求进行验证。然后单击“确定”;

    5)      单击“下一步”;

    6)      单击“完成”;

    7)      停止分布式事务处理协调器服务,然后重新予以启动;

    8)      停止 Microsoft SQL Server 和其他参与分布式事务处理的资源管理器服务(如 Microsoft 消息队列),然后将其重新启动。

    二、Windows xp配置MSDTC的方法

    控制面板-----〉管理工具-----〉组件服务


    选择组件服务-----〉计算机--------〉我的电脑,再点击鼠标右键。






    “点击安全性配置(I)….”按钮,选择项如下:








    引自:http://www.cnblogs.com/lastbeachhead/archive/2009/04/14/1435448.html


           配置msdtc需要分别配置数据库服务器和开发机,因为只有两个机器都配置正确了,分布式事务才不会报乌七八糟的错误。如果数据库服务器和开发机是同一台机器,那就不用看本文了,因为不存在分布式事务的问题。

           数据库服务器和开发机中配置msdtc的步骤是一样的,下面列出配置步骤。

         1、防火墙。如果防火墙是关的,那就不用再设置了。如果防火墙是开的,那么确保msdtc.exe是在它的例外里,一般这个程序是在C:Windows System32 msdtc.exe这个角落。有时候你会发现在防火墙的例外里添加了msdtc,还是不行,那有可能是跟一个端口有关系,即135端口,这是个RPC端 口,在出错的时候,可以尝试将该端口也添加到防火墙的例外里。

         2、打相关数据库补丁。如果数据库服务器是sql2000,那么确保已经打了sp4补丁。也许有人会说,这是什么年代了,还用sql2000做数据库服务 器,但是要记住,买单的是客户,而不是我们自己,客户一般情况下几年前买了sql2000,不一定会被你说服去花钱升级到2005或2008。如果数据库 是sql2005,那么最好把sq2 补丁打上。

        3、msdtc的配置。msdtc的配置是在组件服务里进行的,具体如下图所示,我也就不一一说了。这里是用windows2008为例的,其它版本的设置都类似。

             在使用本地协调器上打上勾。

    设置msdtc属性页

    关键是这页一定要设置正确。

          4、设置com+。很多人遇到msdtc的问题后,在网上百搜搜不到解决办法,故流传被com+彻底打败了,偶对com+没什么研究,下面的设置也是从别人那里学的,我这里做个总结而已。

    编辑[访问权限]和[启动和激活权限]的默认值,将network service账号设置为拥有所有权限。

          5、检查注册表。检查下图中显示的两项的值。在注册表中的路径在图片的下方可以看到。



    1.启动2台sql server服务器的msdtc服务,做cluster的话,必须为每个节点运行comclust.exe
    2.2台sqlserver都要设置好对方的linkserver,
    3.如果2台sql server服务器不属于同一个网段,则需要双方配置host,保证ping机器名可以ping通对方
    4.可以使用dtcping工具测试一下
    5.这样,就sql server可以进行分部式查询和事务操作了。

  • 相关阅读:
    Assigning to 'id<UINavigationControllerDelegate,UIImagePickerControllerDelegate> _Nullable' from incompatible type 'InfchangeVC *const __strong'
    yum源 epel源 no package available 更换国内yum源
    zabbix安装 报错 socket '/var/lib/mysql/mysql.sock' (13)]
    一步一步超级详细的zabbix安装教程
    二进制、八进制、十进制与十六进制
    Linux面试题2
    uniq命令
    tr命令
    Linux面试题
    Ubuntu 14.04更换内核
  • 原文地址:https://www.cnblogs.com/nlh774/p/3434050.html
Copyright © 2020-2023  润新知