在做BizTalk项目的时候,BizTalk Server和Sql Server不在同一台计算机上,使用SQL适配器发送数据提示“新事务不能登记到指定的事务处理器中”的错误,同样的问题在添加SQL适配器元数据时也会提示“无法执行SQL语句。请确保提供的语法正确。新事务不能登记到指定的事务处理器中。”查了一下资料这是MSDTC中的设置不当引起的。
在相关的每台计算机上进行如下操作,下面是在Windwos Server 2003上的操作步骤,
1. 单击“开始”,指向“控制面板”,然后单击“添加或删除程序”。
2. 在“添加或删除程序”对话框中,单击“添加/删除 Windows 组件”。
3. 在“Windows 组件”页上,选择“应用程序服务器”,然后单击“详细信息”。
4. 选择“启用网络 COM+ 访问”,单击“确定”,然后单击“下一步”。
5. 在“完成 Windows 组件向导”页上,单击“完成”。
6. 关闭“添加或删除程序”对话框。
7. 单击“开始”,依次指向“所有程序”、“管理工具”,然后单击“组件服务”。
8. 展开“组件服务”,然后展开“计算机”。
9. 右键单击“我的电脑”,选择“属性”,然后单击“属性”。
10. 选择“MSDTC”选项卡,然后单击“安全配置”。
11. 在“安全设置”窗格中,选中以下选项:
• 网络 DTC 访问
• 允许远程客户端
• 允许远程管理
• 允许入站
• 允许出站
注意 在 Windows Server 2003 群集环境中,请确保选中“要求对呼叫方进行验证”。必须选择此事务模式。
启用 XA 事务
12. 单击“确定”。
13. 在“DTC 控制台消息”对话框中,单击“是”重新启动 DTC。
14. 在“DTC 控制台消息”对话框中,单击“确定”确认 DTC 已重新启动。
15. 单击“确定”关闭“我的电脑属性”对话框。
16. 关闭“组件服务 MMC”。
注意事项:
事务管理器通信的三个单选项为
• 要求对双方进行验证
• 要求对呼叫方进行验证
• 不要求进行验证
针对该设置不同情况需要区别对待,不同的情况组合为
(1) 安装的系统是Windows Server 2000版本、不带SP2的WindowsXP 、不带SP1的Windows 2003系统,带SP2的WindowsXP 、带SP1的Windows 2003系统。
(2) Windows系统所在的计算机是在一个域中还是在多个域中,还是在工作组中。
备注:
打开组件服务也可以通过运行DCOMCNFG.EXE来打开。
以上的设置不一定能够使MSDTC正常运行,比如系统防火墙的设置也有可能导致运行不正常,针对使用MSDTC出现的问题,可访问 http://go.microsoft.com/fwlink/?LinkId=61920寻找参考答案。
一.a.不用事务,关用select 语句.是否可以分布式查询?
b.linkserver 在做分布式更新事务时不能对本机操作.(就是不能环回分布式事务)
c.dbcc traceon (3604, 7300)--用跟踪看更详细错误信息.
d.下载ms提供的dtcping.exe 分装在两台机上,按readme说明来运行它.看出错信息.
http://download.microsoft.com/download/complus/msdtc/1.7/nt45/en-us/dtcping.exe
二.两台机的msdtc是否都打开了.
三.msdtc设置是否正确.
1.打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
2.转至"组件服务管理工具"。
3.浏览至"启动管理工具"。
4.选择"组件服务"。
a.展开"组件服务"树,然后展开"我的电脑"。
b.右键单击"我的电脑",然后选择"属性"。
c.在 msdtc 选项卡中,确保选中了下列选项: 网络 dtc 访问
网络管理
网络事务
xa 事务
e.另外,"dtc 登录帐户"一定要设置为"nt authority/networkservice"。
5.单击"确定"。这样将会提示您"ms dtc 将会停止并重新启动。
所有的依赖服务将被停止。请按是继续"。单击"是"继续。
6.单击"确定"关闭"我的电脑"属性窗口。
四.
msdtc依赖于rpc,rpc使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.
telnet ip 135
如果是关闭的打开它.
五.
有的机由于各种原因),sqloledb不能使用分布式事务,更改为"msdasql" 的odbc方式联接.
使用rras而不是ras.(控制面版--管理工具--远程服务管理器)
check whether you are using remote access server (ras) to access remote servers. if so, make sure that you have implemented routing ras (rras). linked server does not work on ras because ras allows only one way communication.
七.检查你的两台服务器是否在同一个域中.
如果不在同一个域中,是否建立可信任联接.
八.如果是win2000,升级到sp4
九.升级mdac到2.6以上,最好是2.8.
十.要安装sql的最新补丁: sp3a
全部补丁的位置
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&familyid=9032f608-160a-4537-a2b6-4cb265b80766
应该安装的补丁sql 2000 sp3
http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe