zoukankan      html  css  js  c++  java
  • TransactionScope配置

    TransactionScope是个好东西,可以自动管理transaction,即使是对分布式数据库也可以,但是需要一些配置(摸索了2天。。。), 本文的环境为windows 2003:
     
    1. 对跑代码的机器和sql所在的服务器进行Component Services的配置
     
    Administative Tools -> Component Services -> 点开Component Services -> Computers -> My computer -> 右键属性 -> 选择MSDTC -> Security Configuration -> 按如下配置 -> OK -> 重启Distributed Transaction Coordinator服务(一定要手动重启哟)
     
     
     
    最重要的是Allow Inbound 和 Allow Outbound, 其他意义如下:
     
    Setting
     Description
     Corresponding registry value
     
    Network DTC Access
     Determines whether DTC on the local computer is allowed to access the network. This setting must be enabled in combination with one of the other settings to enable network DTC transactions.
     
    Default setting: Off
     Security\NetworkDtcAccess
     
    0 = Off
     
    1 = On
     
    Allow inbound
     Allows a distributed transaction that originates from a remote computer to run on this computer.
     
    Default setting: Off
     To enable this setting you must set the following registry key values to 1:
     
    Security\NetworkDtcAccess
     
    Security\NetworkDtcAccessTransactions
     
    Security\NetworkDtcAccessInbound
     
    To disable this setting, you only need to set the following registry key value to 0:
     
    Security\NetworkDtcAccessInbound
     
    Allow Outbound
     Allows the local computer to initiate a transaction and run it on a remote computer.
     To enable this setting, you need to set the following registry key values to 1:
     
    Security\NetworkDtcAccess
     
    Security\ NetworkDtcAccessTransactions
     
    Security\ NetworkDtcAccessOutbound
     
    To disable this setting, you only need to set the following registry key value to 0:
     
    Security\NetworkDtcAccessOutbound
     
    Mutual Authentication Required
     Adds support for mutual authentication in future versions and is the highest secured communication mode. This is the recommended transaction mode for clients running Windows XP SP2 and servers running one of the Windows Server 2003 operating systems.
     AllowOnlySecureRpcCalls = 1
     
    FallbackToUnsecureRPCIfNecessary = 0
     
    TurnOffRpcSecurity = 0
     
    Incoming Caller Authentication Required
     Requires the local DTC to communicate with a remote DTC using only encrypted messages and mutual authentication. This setting is recommended for servers running Windows Server 2003 that are operating in a cluster.
     
    Only Windows Server 2003 and Windows XP SP2 support this feature, so you should only use this if you know that the DTC on the remote computer runs either the Windows Server 2003 or Windows XP SP2 operating system.
     AllowOnlySecureRpcCalls = 0
     
    FallbackToUnsecureRPCIfNecessary = 1
     
    TurnOffRpcSecurity = 0
     
    No Authentication Required
     Provides system compatibility between previous versions of the Windows operating system. When enabled, communication on the network between DTCs can fall back to a non-authentication or non-encrypted communication if a secure communication channel cannot be established. This setting should be used if the DTC on the remote computer runs a Windows 2000 operating system or a Windows XP operating system earlier than SP2. This setting is also useful when the DTCs that are involved are located on computers that are in domains that do not have an established trust relationship or if the computers are part of a Windows workgroup.
     AllowOnlySecureRpcCalls = 0
     
    FallbackToUnsecureRPCIfNecessary = 0
     
    TurnOffRpcSecurity = 1
     
     

    2. 配置防火墙,同样也是对跑代码的机器和sql所在的服务器进行配置
     
    Windows Firewall -> Exceptions -> Add Program -> Browse -> "C:\WINDOWS\system32\msdtc.exe" -> OK
     
    msdtc.exe 是windows 分布式服务程序。
     

    --------------------------------------------------------------------------------
     
    博客园上的一个解决方法:
     
    第一步: 
    -------------------- 
    win2003缺省禁用远程/网络事务,启用的步骤如下: 
    启用网络 DTC 访问的步骤 
    1. 单击“开始”,指向“控制面板”,然后单击“添加/删除程序”。 
    2. 单击“添加/删除 Windows 组件”。 
    3. 选择“应用程序服务器”,然后单击“详细信息”。 
    4. 选择“启用网络 DTC 访问”,然后单击“确定”。 
    5. 单击“下一步”。 
    6. 单击“完成”。 
    7. 停止分布式事务协调器服务,然后重新予以启动。 
    8. 停止参与分布式事务的任何资源管理器服务(如 Microsoft SQL Server 或 Microsoft Message Queue Server),然后重新予以启动。 
    -------------------------------- 
    第二步: 
    -------------------------------- 
    设置MSDTC:控制面板->管理工具->组件服务->我的电脑->右键->属性->MSDTC->安全配置(Security Configuration)->打开Network DTC Access 同时打上 
    Allow Inbound ,Allow Outbound ,No Authentication Required,Enable Transaction Internet Protocol[TIP] Transaction 
    --------------------------------- 
    第三步:将MSDTC程序添加入Windows防火墙
     
    注意:两台参与分布事务的机器都需按如上操作设置。如果还有问题,则重启机器。
     

    --------------------------------------------------------------------------------
     
    比我多了第一步,在我的试验中没有用到第一步。
     
    有人说TransactionScope不支持跨域访问,在我的实验中,是可以跨域的。
     
    关于TransactionScope有几点需要补充:
     
    1. connection 须在TransactionScope内部打开且关闭
     
    2. 执行sql时出现的异常要抛出到TransactionScope,以使得TransactionScope知道发生异常了,准备回滚
     
     
     
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/iwteih/archive/2009/08/25/4483372.aspx
  • 相关阅读:
    快速莫比乌斯变换(FMT)和快速沃尔什变换(FWT)
    组合意义证明——「Zeilberger 老爷子的 T 恤上写了啥?」
    【题解】礼物 | [洛谷 P4916] 魔力环【20210113 省选模拟赛】【Burnside引理 容斥 组合数】
    线性基总结
    HTML中的img标签属性
    html5语义化标签
    html中代替空格、大于号、小于号等字符编码
    前端网页全局属性
    js中的script标签属性
    html中的meta标签属性
  • 原文地址:https://www.cnblogs.com/xgbzsc/p/net.html
Copyright © 2011-2022 走看看