MSDTC 分布式事务处理记录
来源:互联网 发布:eos remote mac下载 编辑:程序博客网 时间:2024/04/29 23:32
公司有多台数据库服务器,因需要要对各数据库服务器之间进行访问,在现有的服务器a,建立一个链接服务器b,进行简单的数据访问.
select *from b.master.dbo.sysobjects --查询OK
接着在此查询中增加事务:
begin distributed tran
select *from b.master.dbo.sysobjects --查询OK
commit tran
提示: 服务器: 消息 7391,级别 16,状态 1,行 5
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 不能在指定的事务处理器中获得新事务。]
在网络上查询了半天,最后发现是MSDTC的问题,具体解决方法:
1、控制面板--管理工具--展开"组件服务"树,然后展开"我的电脑"。
2、右键单击"我的电脑",然后选择"属性",---在 MSDTC 选项卡中‘安全配置’按钮,确保选中了下列选项:网络 DTC 访问。网络事务 XA 事务 另外,"DTC 登录帐户"一定要设置为"NT Authority/NetworkService"。单击"确定",重新启动MSDTC。
再次进行运行以上查询,查询OK,无错误。
在a 服务器某表中TEST,建立触发器,触发器的执行内容是:将表TEST中的字段ID插入到另外服务器B的一个表中,但提示为:
服务器: 消息 7395,级别 16,状态 2,过程 tr_test,行 14
无法为 OLE DB 提供程序 'SQLOLEDB' 启动嵌套事务。之所以需要嵌套事务是因为 XACT_ABORT 选项已设置为 OFF。
[OLE/DB provider returned message: 无法在此会话中启动更多的事务。]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionLocal::StartTransaction returned 0x8004d013: ISOLEVEL=4096]。
发现是 XACT_ABORT 的问题,在触发器中增加以下语句 set XACT_ABORT on
具体是触发器代码是:
alter trigger tr_test
on TEST
for insert
AS
begin
set XACT_ABORT on
insert into WF.WorkflowEX.[dbo].test
select id from INSERTED
set XACT_ABORT off
end
- MSDTC 分布式事务处理记录
- 分布式事务处理(XA事务处理)
- MSDTC 分布式事务错误解决
- MSDTC 分布式事务无法启动
- MSDTC(分布式交易协调器)
- 分布式事务处理
- 分布式事务处理
- 分布式事务处理
- 分布式事务处理
- 分布式事务处理
- 分布式事务处理
- 分布式事务处理
- 分布式事务处理
- 分布式事务处理
- MSDTC 分布式事务协调程序"集群"
- 分布式数据库跨服务器事务配置(MSDTC)
- 使用分布式事务配置MSDTC的步骤
- msDtc
- SQL*PLUS命令的使用大全
- SEO 学习笔记4——对搜索引擎友好的网页设计制作
- day4
- 坚信自己的力量!!
- 计算机的启动过程详解
- MSDTC 分布式事务处理记录
- 社交场合上的语言密码
- 【转】VMware虚拟机的上网(图解)
- aspx,ascx和ashx使用小结
- SEO 学习笔记5——搜索引擎优化的重点
- 成功者的十一大信念
- day5
- Linux repair filesystem问题的解决办法
- 国际观点:有助于你编程而立即要做的10件事