更新不同服务器上的两个表

时间:2017-03-13 15:07:16

标签: sql-server

我有两台服务器:

  • 我在T1的数据库D1上有表Server1
  • 我在T2的数据库D2上有表Server2

这两个表具有相同的字段F1,F2和F3(F1是唯一的)。

更改T1表字段时,T2表的值也会改变,或者如果T2中没有记录,则插入。

最好的方法是什么?如果可能的话,请提供一个例子。

1 个答案:

答案 0 :(得分:0)

我使用了Linked Server:

EXEC sp_addlinkedserver     
   @server=N'Server2',   
   @srvproduct=N'',  
   @provider=N'SQLNCLI',   
   @datasrc=N'172.17.17.17'; 

我可以从Server1:

更新Server2的数据库D2上的表T2
UPDATE [Server2].[D2].[dbo].[T2]
SET F2 = 'xxxxxx'
WHERE F1 = '123'

但是当我在Trigger中使用时:

USE [D1]
GO
ALTER TRIGGER [dbo].[UpdateTTX]
   ON  [dbo].[T1]
   AFTER  UPDATE
AS 
BEGIN
    EXEC('UPDATE [Server2].[D2].[dbo].[T2] SET F2 = ''xxxxxx'' WHERE F1 = ''123''') 
END

错误: 第2行中的数据未提交。 错误来源:.Net SqlClient数据提供程序。 错误消息:超时已过期。操作完成之前经过的超时时间或服务器没有响应。

我该如何解决?