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

下面的语句出错如何改正
exec sp_addlinkedserver 'WIN2003R2','','SQLOLEDB','WIN2003-0'
exec sp_addlinkedsrvlogin 'WIN2003-0','false',null,'sa','qwe'
GO
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER Trigger_Add_test
  ON [dbo].[Tb_test]
  AFTER INSERT
AS
BEGIN
  SET NOCOUNT ON;
  INSERT WIN2003-0.weds_V4.dbo.Tb_test
         select * from inserted
END
错误提示:
消息 15028,级别 16,状态 1,过程 sp_MSaddserver_internal,第 89 行
服务器 'WIN2003R2' 已存在。
消息 15015,级别 16,状态 1,过程 sp_addlinkedsrvlogin,第 49 行
服务器 'WIN2003-0' 不存在。请使用 sp_helpserver 来显示可用的服务器。
消息 102,级别 15,状态 1,过程 Trigger_Add_test,第 7 行
'-' 附近有语法错误。

------解决方案--------------------
-这个符号需要使用中括号括起来
------解决方案--------------------
--两个错误的地方
exec sp_addlinkedserver 'WIN2003R2','','SQLOLEDB','WIN2003-0'
exec sp_addlinkedsrvlogin 'WIN2003-0','false',null,'sa','qwe'
GO
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER Trigger_Add_test
  ON [dbo].[Tb_test]
  AFTER INSERT
AS
BEGIN
  SET NOCOUNT ON;
  INSERT [WIN2003-0].weds_V4.dbo.Tb_test   --1.连接服务器名如果不符合命名规范,需要加限定 2.不能直接往链接服务器上表中插入数据。
         select * from inserted
END

--解决方案
--1.用Replication来同步两台服务器上的表,而不用触发器
--2.用JOB监控同步
--反向定义链接服务器(在WIN2003-0上定义),并建立一个JOB,监控远程链接服务器上的临时表
--远程链接服务器:触发器-》临时表
--JOB插入数据后,删除临时表中已经同步完的数据。