在SQL SERVER2005端,以下程序成功实现
if exists(select 1 from master..sysservers where srvname='server_2')
exec sp_dropserver 'server_2','droplogins'
go
exec sp_addlinkedserver 'server_2','','SQLOLEDB','192.168.1.109'
exec sp_addlinkedsrvlogin 'server_2','false',null,'sa','123'
go
select * from server_2.cyb.dbo.吊索参数
go
查询到SQL SERVER2000服务器的数据库数据然后,我在SQL SERVER2005端建立触发器
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [TRIG_TEST] ON [dbo].[manu_naodu]
AFTER INSERT
AS
begin
insert into server_2.cyb.dbo.吊索参数 (下参数,上参数) values ('1111','1111')
end 我测试以下代码
INSERT INTO manu_naodu(挠度1)
VALUES (10)
执行后却出现错误提示:
已执行SQL语句:INSERT INTO manu_naodu(挠度1)VALUES(10)
错误源: .net sqlclient data provider
错误信息:无法执行该操作,因为链接服务器“server_2”的OLE DB访问接口“SQLNCLI”无法启动分布式事务
if exists(select 1 from master..sysservers where srvname='server_2')
exec sp_dropserver 'server_2','droplogins'
go
exec sp_addlinkedserver 'server_2','','SQLOLEDB','192.168.1.109'
exec sp_addlinkedsrvlogin 'server_2','false',null,'sa','123'
go
select * from server_2.cyb.dbo.吊索参数
go
查询到SQL SERVER2000服务器的数据库数据然后,我在SQL SERVER2005端建立触发器
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [TRIG_TEST] ON [dbo].[manu_naodu]
AFTER INSERT
AS
begin
insert into server_2.cyb.dbo.吊索参数 (下参数,上参数) values ('1111','1111')
end 我测试以下代码
INSERT INTO manu_naodu(挠度1)
VALUES (10)
执行后却出现错误提示:
已执行SQL语句:INSERT INTO manu_naodu(挠度1)VALUES(10)
错误源: .net sqlclient data provider
错误信息:无法执行该操作,因为链接服务器“server_2”的OLE DB访问接口“SQLNCLI”无法启动分布式事务
SQL Server之分布式事务
if exists(select 1 from master..sysservers where srvname='server_2')
exec sp_dropserver 'server_2','droplogins'
go
exec sp_addlinkedserver 'server_2','','SQLOLEDB','192.168.1.109'
exec sp_addlinkedsrvlogin 'server_2','false',null,'sa','123'
go
select * from server_2.cyb.dbo.吊索参数
insert into server_2.cyb.dbo.吊索参数 (下参数,上参数) values ('1111','1111')
go
但是把插入数据放在触发器中执行就会出现以下错误提示:
链接服务器"server_2"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "没有活动事务。"。
消息 7391,级别 16,状态 2,过程 TRIG_TEST,第 9 行
无法执行该操作,因为链接服务器 "server_2" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。