超级郁闷的问题:该操作未能执行,因为 OLE DB 提供程序 'sqloledb' 无法启动分布式事务。
平台SQLSERVER2000 sp4+windows2003sp2
网上的方法:http://blog.csdn.net/fa_ge/archive/2010/08/20/5827125.aspx,测试了不好使。
当前防火墙关闭,msdtc都设置过,并且启动正常。
查询分析器执行。
drop table #
SELECT * INTO # FROM openrowset('sqloledb','127.0.0.1';'sa';'1234','SELECT * FROM JYCV13.dbo.test3')
上面的可以正常执行,但是下面的就报错了。
drop table #
BEGIN TRAN
SELECT * INTO # FROM openrowset('sqloledb','127.0.0.1';'sa';'1234','SELECT * FROM JYCV13.dbo.test3')
COMMIT TRAN
服务器: 消息 7391,级别 16,状态 1,行 4
该操作未能执行,因为 OLE DB 提供程序 'sqloledb' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'sqloledb' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
网上试过N多方法,都不行。有哪位高手能解决一下,万分感谢!!!
[解决办法]
试试
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRAN
XXX
commit
[解决办法]
http://support.microsoft.com/kb/839279
[解决办法]
如果禁用了分布式事务协调器 (DTS) 服务,或者如果网络 DTC 访问被禁用,会出现这种情况。
默认状态下,网络 DTC 访问被禁用 Windows Server 2003 中。
要变通解决此问题,安装在两台服务器上的网络 DTC 访问:
1.单击 开始,然后单击 控制面板。
2.单击 添加或删除程序,然后单击 添加/删除 Windows 组件。
3.在 组件 框中单击 应用程序服务器,然后单击 详细信息。
4.单击以选中 启用网络 DTC 访问 复选框,然后单击 确定。
5.单击 下一步,然后按照以完成安装过程屏幕上显示的说明进行操作。
6.停止并重新启动分布式事务处理协调器服务。
7.停止并重新加入任何资源管理器服务启动分布式事务 (如 Microsoft SQL Server 或 Microsoft
消息队列服务器) 中。