解决SQL Server中的DTC错误

     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服务。

解决SQL Server中的DTC错误_第1张图片

 

  如果启动MSDTC网络访问之后仍出现错误,那么就要进一步查看MSDTC设置是否正确。具体步骤如下:

 

  1、打开管理工具,然后点击组件服务;

 

  2、点击右侧的计算机、我的电脑;

 

  3、右键点击我的电脑,选择属性;

 

  4、点击MSDTC选项卡,选择安全性配置;

 

  5、勾选网络DTC访问和其中的子选项(允许远程客户端、允许远程管理);

 

  6、事务管理通信中启动允许入站、允许出站和TIP事务;

 

  7、子选项中勾选不要求进行验证;

 

  8、最后勾选启动XA事务。

 

  经过以上步骤,设置画面应该如图2所示:

解决SQL Server中的DTC错误_第2张图片

 

 

  修改做好后,重启SQL Server。

 

两台sql server服务器都需要做上述相同的设置,才能保证分布式事务的正常执行。

你可能感兴趣的:(数据库)