分布性事务如何解决

insert [dbs1].tmp.dbo.ta
它加上begin tran则

服务器: 消息 7391,级别 16,状态 1,过程 pFinanceStatisticBak,行 23
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

先谢了

作者: stroller   发布时间: 2003-11-18

验证指定的 OLE DB 提供程序是否支持分布式事务。如果提供程序不支持分布式事务,则将数据修改语句重写为不使用分布式事务。

作者: magicangel   发布时间: 2003-11-18

你的MS DTC服務沒有啟動吧﹖

作者: xzh2000   发布时间: 2003-11-18

1,我的DTC服务已启动了(执行此存储过程的服务器)
2,对
“验证指定的 OLE DB 提供程序是否支持分布式事务。如果提供程序不支持分布式事务,则将数据修改语句重写为不使用分布式事务。”
我该如何验证是否支持?

作者: stroller   发布时间: 2003-11-19

USE pubs
GO
SET XACT_ABORT  ON

BEGIN DISTRIBUTED TRANSACTION
UPDATE authors
   SET au_lname = 'McDonald' WHERE au_id = '409-56-7008'
UPDATE  [192.168.9.3].pubs.dbo.authors
   SET au_lname = 'McDonald' WHERE au_id = '409-56-7008'
COMMIT TRAN

如果你的鏈接服務器配置是正確的﹐加上SET XACT_ABORT  ON就可以啦.

作者: xzh2000   发布时间: 2003-11-19

如果是異構數據庫肯定是不支持DTS事務的。

作者: xzh2000   发布时间: 2003-11-19

dbs1上的MS DTC需要启动。

作者: nust   发布时间: 2003-11-19

我再细试原因吧
1.两个库的DTC在服务中都已启动
2.SET XACT_ABORT ON也已设置
3,两个都是SQL SERVER库
4,在PROCEDURE中有如下码
SET XACT_ABORT on
--1-业务量
begin distributed  tran

作者: stroller   发布时间: 2003-11-20

成功后将心得写出来,我想应该成功的,我贴的代码是测试过的。

作者: xzh2000   发布时间: 2003-11-20

两台数据库服务器能通过机器名PING通对方吗?如果PING不通,会产生无法启动分布式事务的错误。

作者: nustzgb   发布时间: 2004-01-17

一样的操作,失败

服务器: 消息 7391,级别 16,状态 1,过程 testinsert,行 8
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

作者: jieyancai   发布时间: 2011-02-24