0

假设我有表 T,其中包含“名称”和“ID”列。表 T 存在于服务器 S1 和 S2 上,并在每个服务器中保存相同的数据(数千行)。现在假设“ID”列在 S2 的表 T 上完全消失。使用服务器 S1 上的 T 版本重新填充它的最有效方法是什么?

4

2 回答 2

1

连接到 S2 并建立到 S1 的链接并假设您有一个字段或一组字段可以帮助唯一地识别 S1.T 和 S2.T 中的行,您可以尝试发出如下UPDATE语句

UPDATE t2
   SET t2.id = t1.id
  FROM T t2 JOIN S1.<dbname>.dbo.T t1
    ON t2.somefield = t1.somefield
-- AND t2.otherfield = t1.otherfield

注意:SELECT先做

于 2013-06-14T04:58:15.030 回答
0

如果表完全相同,我只需从损坏的表中删除所有数据,然后使用 SQL Server 导出/导入向导使用其他服务器上的数据填充此表。

另一种选择是为此使用查询,但您首先需要创建一个链接服务器。之后,您可以使用这样的东西。

--delete all data from damaged table
DELETE FROM S2.T
--copy all data from secondary server
INSERT INTO S2.T (ID, Name)
SELECT S1.T.ID, S1.T.Name
FROM S1.T

注意:这假设您的数据在另一台服务器上完全相同。如果不是这种情况,请不要执行此操作,因为它可能会造成损坏。

于 2013-06-14T18:56:53.460 回答