错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
来源:互联网 发布:gis空间数据分析 编辑:程序博客网 时间:2024/05/21 22:34
在联机文档中是这样描述MS DTC的:
Microsoft 分布式事务处理协调器 (MS DTC) 是一个事务管理器,它允许客户端应用程序在一个事务中包含多个不同的数据源。MS DTC 协调在所有已在事务中登记的服务器间提交分布式事务。
Microsoft® SQL Server™ 安装可通过下列方法参与分布式事务:
1,调用运行 SQL Server 的远程服务器上的存储过程。
2,自动或显式地将本地事务提升为一个分布式事务并在该事务中登记远程服务器。
3, 执行分布式更新以更新多个 OLE DB 数据源上的数据。如果这些 OLE DB 数据源支持 OLE DB 分布式事务接口,SQL Server 还可以将它们登记在分布式事务中。 MS DTC 服务协调正确完成分布式事务,以确保所有服务器上的全部更为永久性的,或在发错误时删除所有更新。
SQL->CREATE TABLE test1 ([id] int ,email varchar(50))
表test1在A服务器中,表email在B服务器中,其表结构和test1一样。在A服务器中运行
SQL->EXEC sp_addlinkedserver 'B','SQL Server'
SQL->GO
SQL->EXEC sp_addlinkedsrvlogin 'B','false','sa','sa','123456'
同样在B服务器中运行以上代码,不同的是服务器名称的变化。
在B服务器中执行如下语句:
SQL->CREATE PROCEDURE dbo.usp_test
SQL->AS
SQL->SELECT id,email FROM email
SQL->GO
这样就把为AB服务器互相添加了Linked Server,并在AB服务器中启动MSDTC服务。在A服务器中运行如下语句:
SQL->BEGIN TRANSACTION Ta
SQL->INSERT INTO test (id,email)
SQL->EXEC a.test.dbo.usp_test
SQL->COMMIT TRANSACTION Ta
运行出错,错误如下:
服务器: 消息 7391,级别 16,状态 1,行 1
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。 [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ] OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。<br>估计是MSDTC的相关配置有问题。检查MSDTC配置。似乎都满足先制条件。苦思,终不得解,去网上找相关资料。终于不负有心人,找到了解决方法。继续……
Microsoft 分布式事务处理协调器 (MS DTC) 是一个事务管理器,它允许客户端应用程序在一个事务中包含多个不同的数据源。MS DTC 协调在所有已在事务中登记的服务器间提交分布式事务。
Microsoft® SQL Server™ 安装可通过下列方法参与分布式事务:
1,调用运行 SQL Server 的远程服务器上的存储过程。
2,自动或显式地将本地事务提升为一个分布式事务并在该事务中登记远程服务器。
3, 执行分布式更新以更新多个 OLE DB 数据源上的数据。如果这些 OLE DB 数据源支持 OLE DB 分布式事务接口,SQL Server 还可以将它们登记在分布式事务中。 MS DTC 服务协调正确完成分布式事务,以确保所有服务器上的全部更为永久性的,或在发错误时删除所有更新。
SQL->CREATE TABLE test1 ([id] int ,email varchar(50))
表test1在A服务器中,表email在B服务器中,其表结构和test1一样。在A服务器中运行
SQL->EXEC sp_addlinkedserver 'B','SQL Server'
SQL->GO
SQL->EXEC sp_addlinkedsrvlogin 'B','false','sa','sa','123456'
同样在B服务器中运行以上代码,不同的是服务器名称的变化。
在B服务器中执行如下语句:
SQL->CREATE PROCEDURE dbo.usp_test
SQL->AS
SQL->SELECT id,email FROM email
SQL->GO
这样就把为AB服务器互相添加了Linked Server,并在AB服务器中启动MSDTC服务。在A服务器中运行如下语句:
SQL->BEGIN TRANSACTION Ta
SQL->INSERT INTO test (id,email)
SQL->EXEC a.test.dbo.usp_test
SQL->COMMIT TRANSACTION Ta
运行出错,错误如下:
服务器: 消息 7391,级别 16,状态 1,行 1
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。 [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ] OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。<br>估计是MSDTC的相关配置有问题。检查MSDTC配置。似乎都满足先制条件。苦思,终不得解,去网上找相关资料。终于不负有心人,找到了解决方法。继续……
解决方法:
组件服务=WIN+R调出运行框,输入dcomcnfg组件服务--> a.展开"组件服务"树,然后展开"我的电脑"。b.右键单击"我的电脑",然后选择"属性"。C.在 MSDTC 选项卡中‘安全配置’按钮,确保选中了下列选项:网络 DTC 访问。网络事务 XA 事务 d.另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。e单击"确定",重新启动MSDTC。
再次运行以上语句,结果成功。
阅读全文
1 0
- 错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
- 错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
- SQL Server分布式事务处理(MS DTC)
- SQL Server 分布式事务处理(MS DTC)初探
- SQL Server 分布式事务处理(MS DTC)初探
- 分布式事务 dtc 的使用
- 如何在运行 Windows XP/2003 的计算机上重新安装 Microsoft 分布式事务处理协调器
- 如何在 Windows Server 2003 群集上配置 Microsoft 分布式事务处理协调器
- 关于“COM+ 无法与 Microsoft 分布式事务协调程序交谈
- COM+无法与Microsoft分布式事务协调程序交谈
- 关于“COM+ 无法与 Microsoft 分布式事务协调程序交谈
- COM+ 无法与 Microsoft 分布式事务协调程序交谈
- COM+ 无法与 Microsoft 分布式事务协调程序交谈
- 8004E00F - COM+无法与Microsoft分布式事务协调交谈
- COM+ 无法与 Microsoft 分布式事务协调程序交谈
- 8004E00F - COM+无法与Microsoft分布式事务协调交谈
- 8004E00F - COM+无法与Microsoft分布式事务协调交谈
- COM+无法与Microsoft分布式事务协调程序交谈
- 深度优先-Leetcode46 全排列
- ImportError: No module named caffe.proto解决办法
- 递归详解(斐波拉契和汉诺塔应用)
- jdbcTemplate实现crud操作(查询介绍)
- Spring Cache抽象详解
- 错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
- BZOJ 1058: [ZJOI2007]报表统计 STL
- W3school API CHM 文档下载 超全强大文档W3C
- 解决eclipse中源码乱码
- sql语句中条件查询like的效率,及使用规范.
- ctf bugku wirteup 简单个人信息收集
- 在CentOS上搭建PHP服务器环境
- SDUT-1333 简单字符串比较
- 什么是IDOC,以及IDOC的步骤