日期:2014-05-17  浏览次数:20709 次

通过链接服务器的触发器同步数据出现如下问题 ,求牛人指点
操作体统windows2003 包含SQL2005 数据库 qixiang 有表QX_MsgMediumSmallScaleTemp

操作体统windows2008 包含SQL2008  数据库shuiwen2有表st_pptn_r
两台电脑在同一局域网内
现在需要把QX_MsgMediumSmallScaleTemp中的数据同步到表st_pptn_r中
首先建立链接服务器,在表QX_MsgMediumSmallScaleTemp上建立触发器同步数据,但出现如下错误
具体建立链接服务器的SQL如下


--创建远程同步连接
IF not exists(select 1 from master.dbo.sysservers where srvname = 'shangluoqixiang')
BEGIN
 
EXEC sp_addlinkedserver   'shangluoqixiang', ' ', 'SQLOLEDB', '127.0.0.1'--这一行需要根据实际情况修改 IP
EXEC sp_addlinkedsrvlogin 'shangluoqixiang', 'false',null, 'sa', 'password'--这一行需要根据实际情况修改 密码
print ' 数据库远程联接创建成功!';
END
ELSE
     exec sp_dropserver  'shangluoqixiang', 'droplogins'
EXEC sp_addlinkedserver   'shangluoqixiang', ' ', 'SQLOLEDB', '127.0.0.1'--这一行需要根据实际情况修改 IP
EXEC sp_addlinkedsrvlogin 'shangluoqixiang', 'false',null, 'sa', 'password' --这一行需要根据实际情况修改 密码
print '数据库远程联接创建成功!';
GO

插入的触发器脚本如下

create TRIGGER [dbo].[trigger_MsgMediumSmallScale_insert]
on [dbo].[QX_MsgMediumSmallScaleTemp]
    --on MsgMediumSmallScale
FOR INSERT
AS 
--在事务开始前加入set xact_abort ON语句
   SET XACT_ABORT ON
--定义变量    
DECLARE @stcd varchar(8);
DECLARE @rain int,@stid int;
DECLARE @DateChar datetime,@tm datetime;
DECLARE @TimeChar nchar(4)
DECLARE @hour int
set @stid=1;--这一行需要根据实际情况修改 没有确定
 
    DECLARE @countNo int; 

    --INSERT trigger  
     select   @countNo =count(StationID) from inserted; 
     print  @countNo +'2244'
       if(@countNo=1)
      begin
        SELECT @stcd=StationID, @DateChar=DateChar , @TimeChar=TimeChar, @rain =Rain from inserted;
        --  set @hour=CONVERT(int, @TimeChar,2)
      --  set @tm =dateadd(hh,CONVERT(int, @TimeChar,2),@DateChar)
      set @tm =@DateChar

        INSERT INTO shangluoqixiang.[shanyang].[dbo].[st_pptn_r]([stid] ,[tm] ,[intv],[pdr],[dyp],[drp],[wth],[stcd])
                     VALUES
                             (1,'2013-04-15',1 ,null,1,null ,null ,'88') 
       
      end


关键是,在qixiang 中直接执行可以,但在触发器中执行出错
iNSERT INTO shangluoqixiang.[shanyang].[dbo].[st_pptn_r]([stid] ,[tm] ,[intv],[pdr],[dyp],[drp],[wth],[stcd])
                     VALU