SQL Server2000分布式事务错误解决方法

如果在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

时间: 2024-09-13 01:05:57

SQL Server2000分布式事务错误解决方法的相关文章

windows server 2003 中 SQL Server 2000 分布式事务 错误解决方法

server|window|错误|分布式|解决 症状如果在 Windows .NET Server 上安装的 SQL Server 2000 中运行链接服务器查询,可能会返回下列错误(即使 MSDTC 正在该服务器上运行):Server:Msg 8501, Level 16, State 3, Line 3 MSDTC on server 'server name' is unavailable.在 SQL Server 错误日志中,您会发现由运行该查询的 spid 引发的下列错误:Resour

SQL Server 2000分布式事务错误解决

如果在Windows.NETServer上安装的SQLServer2000中运行链接服务器查询,可能会返回下列错误(即使MSDTC正在该服务器上运行): 症状如果在Windows.NETServer上安装的SQLServer2000中运行链接服务器查询,可能会返回下列错误(即使MSDTC正在该服务器上运行):Server:Msg8501,Level16,State3,Line3 MSDTConserver'servername'isunavailable.在SQLServer错误日志中,您会发现

SQL SERVER 9003错误解决方法_MsSql

SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft SQL Server,错误: 9003)" 看是9003错误,就想到可能是由于日志文件的原因,再看数据库文件可能损坏,于是想到dbcc checkdb指令. 方法如下: 1.我们使用默认方式建立一个供恢复使用的数据库(如pos).可以在SQL   Server   Enterprise   Manag

SQL SERVER 9003错误解决方法

SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft SQL Server,错误: 9003)" 看是9003错误,就想到可能是由于日志文件的原因,再看数据库文件可能损坏,于是想到dbcc checkdb指令. 方法如下: 1.我们使用默认方式建立一个供恢复使用的数据库(如pos).可以在SQL   Server   Enterprise   Manag

sql server 2005时发生18452错误解决方法

ODBC 测试sql server 2005时发生18452错误解决方法 用.net开发的网站连接数据库里发生错误,当访问静态页面里显示正常. 1.首先想到的是测试ODBC数据源,当用sql用户和密码登录时出现如下图错误: 2.因为是在客户服务器上安装,所以未设置sa的密码,由于安装时未勾选择了"windows身份验证",所以当你测试sql server 2005的用户时出现此错误. 3.打开"SQL Server Management Studio"双击数据库所在

ORA-04098错误解决方法

错误|解决 ORA-04098错误解决方法 数据库版本:8.1.5 平台:SOLARIS 5.7   背景: 用户建立了一个TRIGGER:create or replace trigger ddl_denybefore create or alter or drop on databasedeclarebegininsert into ddl_logs values(ora_dict_obj_owner,ora_dict_obj_name,sysdate);exceptionwhen no_d

Mysql 1864 主从错误解决方法_Mysql

从字面意思看了一下是因为slave_pending_jobs_size_max默认值为16777216(16MB),但是slave接收到的slave_pending_jobs_size_max为17085453(17M): 解决方案 从库执行如下SQL mysql>stop slave; mysql>set global slave_pending_jobs_size_max=20000000; mysql> start slave; #在多线程复制时,在队列中Pending的事件所占用

MySQL 1236错误解决方法

MySQL 1236错误解决方法 由于主服务器异外重启, 导致从报错, 错误如下: show slave status错误: mysql> show slave status/G Master_Log_File: mysql-bin.000288 Read_Master_Log_Pos: 627806304 Relay_Log_File: mysql-relay-bin.000990 Relay_Log_Pos: 627806457 Relay_Master_Log_File: mysql-bi

Linux系统中操作文件数过多导致的错误解决方法

  linux 打开文件数 too many open files 解决方法 too many open files出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户最大允许打开文件数量 代码如下: ulimit -a fdipzone@ubuntu:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 2