在回顾许多答案时,没有看到我认为应该简单的解决方案。
由于ERP供应商的更新导致数据丢失,我试图在另一台服务器上的已恢复数据库中更新一台服务器上Production
数据库中的几个字段。
无论如何,在SSMS中连接两台服务器,只想运行下面的查询:
USE coll18_production;
GO
USE coll18_test2;
GO
UPDATE coll18_Production.dbo.PERSON
SET W71_ID_CRD_NO = T2.PERSON_USER1, W71_ID_CRD_DATE = T2.PERSON_USER9
FROM coll18_test2.dbo.PERSON as T2
WHERE coll18_Production.dbo.PERSON.ID = T2.ID;
我认为这是一个简单的更新,但无法通过相同的表格查询2个不同的服务器数据库。
谢谢,如果有人可以这么简单,
唐纳德
好的,谢谢你的意见。在时间的本质上,我将做一些类似于cpaccho推荐的事情。创建一个临时表,其中包含我要在生产数据库中更新的2个字段。然后我将连接到我从备份恢复的Test2数据库。使用主键将这两个字段导出为csv文件,然后将此表数据简单地还原到temp中。我的生产数据库中的表。然后只需将我的更新从此临时表运行到我的生产PERSON表中的2个字段,其中ID彼此相等。
周末愉快, 唐纳德
答案 0 :(得分:0)
问题在于,由于数据库位于两个不同的服务器上以便在它们之间加入,因此您需要一种方法让服务器相互通信。
这样做的方法是通过链接服务器。然后,您可以使用4部分命名(server.DB.Schema.Table)设置查询以将2个表连接在一起并完成目标。查询看起来像这样:
UPDATE Server.DB.Schema.Table1
SET column = b.column
FROM Server1.DB.Schema.Table1 a
INNER JOIN Server2.DB.Schema.Table2 b
ON a.column = b.column
Where a.column = something
您只需要在一侧设置链接服务器,查询中的服务器名称将是您为链接服务器指定的名称。唯一需要注意的是,这可能很慢,因为为了加入表,SQL Server可能必须将整个表从一个服务器复制到另一个服务器。我还会在您要更新的服务器上设置链接服务器(以便在与要更新的数据库相同的服务器上运行更新)
答案 1 :(得分:0)
一种简单而相当粗俗的方法是将表从数据库硬拷贝到数据库......
首先创建一个包含所需更改的表:
USE coll18_test2;
GO
SELECT PERSON_USER1, PERSON_USER9, ID
INTO dbo.MyMrigationOrWhateverNameYouLike
FROM coll18_test2.dbo.PERSON
然后转到SSMS,右键单击coll18_test2数据库 - >任务 - >生成脚本并与助手一起为新创建的表生成脚本。不要忘记在高级选项中设置"数据类型到脚本" to" Schema和" Data"。
现在您已拥有脚本,只需在生产数据库中运行它,然后根据该表进行查询。
UPDATE dbo.PERSON
SET W71_ID_CRD_NO = T2.PERSON_USER1, W71_ID_CRD_DATE = T2.PERSON_USER9
FROM dbo.MyMrigationOrWhateverNameYouLike as T2
WHERE coll18_Production.dbo.PERSON.ID = T2.ID;
最后放下MyMrigationOrWhateverNameYouLike表,你就完成了......