有AB两个服务器以下是A服务器一个存储过程,主要功能是向B服务器中表写一条记录,第一个在查询管理器中执行正常,但第二个加上事务后则会报错,这种需要加事务的应如何解决呢
服务器: 消息 15002,级别 16,状态 1,过程 sp_addlinkedsrvlogin,行 17
不能在事务内部执行过程 'sp_addlinkedsrvlogin'。
服务器: 消息 7391,级别 16,状态 1,过程 T_save1,行 16
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。CREATE Procedure T_save1
(
@phid varchar(20),
@datestr varchar(20),
@txt varchar(10))AS declare @tempstr varchar(30)
set @tempstr='你的激活码'+@txt
EXEC sp_addlinkedsrvlogin 'SMS','false',null,'sa','123qweasdzxc'
INSERT INTO SMS.SMSInfo.dbo.SendSms (CellPhone,CText,Cdate,Ctime,SendB) VALUES (@phid,@tempstr,@datestr,'0',0)
RETURN
GO
CREATE Procedure T_save1
(
@phid varchar(20),
@datestr varchar(20),
@txt varchar(10))AS
SET XACT_ABORT ON --强制出错全部回滚
BEGIN TRAN declare @tempstr varchar(30)
set @tempstr='你的激活码'+@txt
EXEC sp_addlinkedsrvlogin 'SMS','false',null,'sa','123qweasdzxc'
INSERT INTO SMS.SMSInfo.dbo.SendSms (CellPhone,CText,Cdate,Ctime,SendB) VALUES (@phid,@tempstr,@datestr,'0',0) --出错处理
IF @@ERROR<>0 GOTO errhandle---->發生錯誤直接跳轉到後面,不發生錯誤提交
COMMIT TRAN
RETURN
errhandle:
IF @@ERROR<>0
BEGIN
ROLLBACK TRAN
END
RETURN
GO
服务器: 消息 15002,级别 16,状态 1,过程 sp_addlinkedsrvlogin,行 17
不能在事务内部执行过程 'sp_addlinkedsrvlogin'。
服务器: 消息 7391,级别 16,状态 1,过程 T_save1,行 16
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。CREATE Procedure T_save1
(
@phid varchar(20),
@datestr varchar(20),
@txt varchar(10))AS declare @tempstr varchar(30)
set @tempstr='你的激活码'+@txt
EXEC sp_addlinkedsrvlogin 'SMS','false',null,'sa','123qweasdzxc'
INSERT INTO SMS.SMSInfo.dbo.SendSms (CellPhone,CText,Cdate,Ctime,SendB) VALUES (@phid,@tempstr,@datestr,'0',0)
RETURN
GO
CREATE Procedure T_save1
(
@phid varchar(20),
@datestr varchar(20),
@txt varchar(10))AS
SET XACT_ABORT ON --强制出错全部回滚
BEGIN TRAN declare @tempstr varchar(30)
set @tempstr='你的激活码'+@txt
EXEC sp_addlinkedsrvlogin 'SMS','false',null,'sa','123qweasdzxc'
INSERT INTO SMS.SMSInfo.dbo.SendSms (CellPhone,CText,Cdate,Ctime,SendB) VALUES (@phid,@tempstr,@datestr,'0',0) --出错处理
IF @@ERROR<>0 GOTO errhandle---->發生錯誤直接跳轉到後面,不發生錯誤提交
COMMIT TRAN
RETURN
errhandle:
IF @@ERROR<>0
BEGIN
ROLLBACK TRAN
END
RETURN
GO
一个局域网内
A win2003 服务器版
B win2000p 装的是开发人员版
2、 EXEC sp_addlinkedsrvlogin