假设我的表T包含“名称”和“ID”列。表T存在于服务器S1和S2上,并且在每个(几千行)中保存相同的数据。现在假设在S2的表T上完全消除了“ID”列。在服务器S1上使用T版本重新填充它的最有效方法是什么?
答案 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
注意:这假设您的数据在另一台服务器上完全相同。如果不是这种情况,请不要执行此操作,因为它可能会造成损害。