从另一台服务器上的另一个表更新列中的值

时间:2013-06-14 04:49:18

标签: sql sql-server sql-server-2008

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

另一种选择是对此使用查询,但您首先需要创建linked 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

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

相关问题