当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQLServer2000分布式事务错误解决方法

MSSQL
SQL Server SA权限总结经典技术
ASP数据库编程SQL常用技巧
SQL SERVER数据库开发之存储过程应用
SQL Server 2000的安全配置
MSSQL经典语句
SQL 经典语句
有用的SQL语句(删除重复记录,收缩日志)
Access 数据类型与 MS SQL 数据类型的相应
SQL语句示例
SQL数据类型详解
将Sql Server对象的当前拥有者更改成目标拥有者
MSSQL内外连接(INNER JOIN)语句详解
SQL 外链接操作小结 inner join left join right join
SQL Server中网络备份一例
SQL语句导入导出大全
SQL 新增/修改 表字段列的类型等
系统存储过程,sp_executesql
sql2005开启xp_cmdshell
实例学习SQL的Select命令
删除数据库中重复数据的几个方法

MSSQL 中的 SQLServer2000分布式事务错误解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 51 ::
收藏到网摘: n/a

 如果在Windows.NETServer上安装的SQLServer2000中运行链接服务器查询,可能会返回下列错误(即使MSDTC正在该服务器上运行):

症状如果在Windows.NETServer上安装的SQLServer2000中运行链接服务器查询,可能会返回下列错误(即使MSDTC正在该服务器上运行):Server:Msg8501,Level16,State3,Line3 MSDTConserver'servername'isunavailable.在SQLServer错误日志中,您会发现由运行该查询的spid引发的下列错误:ResourceManagerCreationFailed:ResultCode=0x8004d01c原因这是设计使然。如果在"本地系统"帐户下运行"分布式事务处理协调器服务"就会发生此错误。解决方案最近为了提高RPC安全性对DTC所做的更改要求MSDTC作为"NTAuthority\NetworkService"运行。这是。NETServer的默认选项。在WindowsNT和Windows2000中,默认情况下MSDTC服务是在"本地系统"帐户下运行的。

警告:"注册表编辑器"使用不当可造成严重问题,这些问题可能需要重新安装操作系统。Microsoft不保证能够解决因为"注册表编辑器"使用不当而产生的问题。使用"注册表编辑器"需要您自担风险。

若要将MSDTC服务帐户从"本地系统"更改为"NTAuthority\NetworkService",请执行下列步骤:1.运行regedt32,浏览至HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC.添加一个DWORD值TurnOffRpcSecurity,值数据为1.2.打开命令提示,运行"netstopmsdtc",然后运行"netstartmsdtc".3.转至"组件服务管理工具".

a.浏览至"启动管理工具".
b.选择"组件服务".
c.展开"组件服务"树,然后展开"我的电脑".
d.右键单击"我的电脑",然后选择"属性".
e.在MSDTC选项卡中,确保选中了下列选项:网络DTC访问网络管理网络事务XA事务另外,"DTC登录帐户"一定要设置为"NTAuthority\NetworkService".
f.单击"确定".这样将会提示您"MSDTC将会停止并重新启动。所有的依赖服务将被停止。请按'是'继续".单击"是"继续。
g.单击"确定"关闭"我的电脑"属性窗口。

4.再次运行regedt32,浏览至HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC,然后删除TurnOffRpcSecurity项。现在您的MSDTC服务应该在"NTAuthority\NetworkService"帐户下运行了,并且不会再出现该错误。

更多信息当"MSDTC安全性"配置下的"网络DTC访问"禁用时,如果运行链接服务器查询则会返回下列错误:Server:Msg7391,Level16,State1,

以下为引用的内容:

Line2TheoperationcouldnotbeperformedbecausetheOLEDBprovider'SQLOLEDB'
wasunabletobeginadistributedtransaction.[OLE/DBproviderreturnedmessage:Newtransactioncannotenlistinthespecifiedtransactioncoordinator.]
跟踪标记7300打开时:Server:Msg7391,Level16,State1,Line2TheoperationcouldnotbeperformedbecausetheOLEDBprovider'SQLOLEDB'
wasunabletobeginadistributedtransaction.[OLE/DBproviderreturnedmessage:Newtransactioncannotenlistinthespecifiedtransactioncoordinator.]OLEDBerrortrace[OLE/DBProvider'SQLOLEDB'ITransactionJoin::JoinTransactionreturned0x8004d00a].


MSDTC服务一定要按照上面"解决方案"一节中的说明进行设置,才能防止此错误。

再现现象的步骤

1.转至"启动管理工具服务".
2.右键单击"分布式事务处理协调器"服务,转至"登录"选项卡,选择"登录身份"下的"本地系统"帐户。
3.停止然后重新启动该服务。
4.从查询分析器,运行下列脚本:execsp_addlinkedserverremote1execsp_setnetnameremote1,<remoteservername>goexecremote1.pubs.dbo.sp_executesqlN'createtablet(c1int)'gosetxact_abortongobegintraninsertintoremote1.pubs.dbo.tvalues(1)committrango