Sql server 使用SQL查询在服务器之间复制表,并根据标识列自动插入/更新

Sql server 使用SQL查询在服务器之间复制表,并根据标识列自动插入/更新,sql-server,Sql Server,假设我有两台服务器,每台服务器有一个相同的表。在每个表中,我都有一个标识增量(如果你问的话,增量为1),并且有一个“时间”列要注意记录是何时更新/插入的 有点像这样: ID Content Time 1 banana 2011-01-01 09:59:23.000 2 apple 2011-01-02 12:41:01.000 3 pear 2011-04-05 04:05:44.000 我希望按照以下要求定期将所有内容

假设我有两台服务器,每台服务器有一个相同的表。在每个表中,我都有一个标识增量(如果你问的话,增量为1),并且有一个“时间”列要注意记录是何时更新/插入的

有点像这样:

ID    Content     Time
1     banana      2011-01-01 09:59:23.000
2     apple       2011-01-02 12:41:01.000
3     pear        2011-04-05 04:05:44.000
我希望按照以下要求定期将所有内容从一个表复制(插入/更新)到另一个表:

a。仅在特定月份之前复制(插入/更新)。i、 e 2011年8月之前。不过这很容易

b。仅当记录确实是新记录时插入(可能是ID不存在时?)

c。如果您发现“时间”列比上次执行的副本更新(基本上这意味着该记录有更新)(我也保存上次副本的日期/时间),则更新

我可以通过构建一个程序并逐个记录地检查它来完成所有这些,但是如果有数十万条记录,这将非常缓慢

是否可以仅使用查询来完成

顺便说一句,我使用这个查询在服务器之间进行复制,我使用的是SQLServer2005

INSERT OPENQUERY(TESTSERVER, 'SELECT * FROM Table1')
SELECT * FROM Table1

thx for da help:)

在这种情况下,我的策略是:

首先进行外部联接,并确定临时表中数据的状态 e、 g

然后运行n个语句将三个表连接在一起,每个状态一个。有时,您可以通过使用正确的键在目标中输入空行来消除多个语句。然后,您只需要执行更复杂的更新/复制

然而,由于这些都是跨服务器的——我建议采用以下策略——将源表完全复制到另一台服务器上,然后在另一台服务器上执行上述操作

只有在这之后,我才会进行性能分析,以便在需要时进行优化

   #temp
   id     state
   1      update
   2      copy
   3      copy
   4      insert