SQL Server的连接服务器设置可以使你执行查询和存储过程,并通过连接其它的SQL Server和数据库系统接收来自外部的数据集。
微软分布式传输协调程序(MSDTC)的作用是在多系统的基础上,强制保持事务的一致性。要确保功能的正确实现并不出问题,你需要合理地设置MSDTC和SQL Server。
如果MSDTC配置不合理,那么就会出现以下的错误信息:
[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
Msg 7391, Level 16, State 1, Line 3
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
当MSDTC不被允许访问网络的时候就会出现以上的问题,而在Windows Server 2003中默认的配置就是不允许访问网络的。要启动MSDTC网络访问功能,你需要做到以下几点:
1、打开控制面板,选择添加或删除程序,然后选择添加/删除Windows组件;
2、选择应用服务器,点击详细信息,然后按照图1所示的选择启动网络DTC访问;
3、重启SQL Server和MSDTC服务。
如果启动MSDTC网络访问之后仍出现错误,那么就要进一步查看MSDTC设置是否正确。具体步骤如下:
1、打开管理工具,然后点击组件服务;
2、点击右侧的计算机、我的电脑;
3、右键点击我的电脑,选择属性;
4、点击MSDTC选项卡,选择安全性配置;
5、勾选网络DTC访问和其中的子选项(允许远程客户端、允许远程管理);
6、事务管理通信中启动允许入站、允许出站和TIP事务;
7、子选项中勾选不要求进行验证;
8、最后勾选启动XA事务。
经过以上步骤,设置画面应该如图2所示:
修改做好后,重启SQL Server。
两台sql server服务器都需要做上述相同的设置,才能保证分布式事务的正常执行。