在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”无法启动分布式事务

解决方案 »

  1.   

    http://blog.csdn.net/wufeng4552/archive/2009/11/11/4796846.aspx
    SQL Server之分布式事务
      

  2.   

    我直接在服务器数据库上插入数据就没有问题,插入数据成功。
    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" 无法启动分布式事务。