我想在链接服务器上更新查询结果以及链接服务器。
第一个sql代码段为我提供了要更新的值:
SELECT mmdb_vessel.IMONo, mmdb_vessel.DeathDate
From OPENQUERY(MMDB, 'SELECT FunctionalLocation, IMONo, VesselStatus, CONVERT(VARCHAR(10), DeathDate, 102) AS DeathDate
FROM VESSEL
WHERE VESSEL.VesselStatusID <> 42 AND VESSEL.DeathDate is not null') as mmdb_vessel
, eb_all_v
WHERE
eb_all_v.IMO_No = mmdb_vessel.IMONo
AND eb_all_v.status = 'in service'
第二个实际上是我无法实现的,它应该显示我想要实现的目标:
UPDATE EPI2..EPI.PLANT
SET KIND_OF_LIQUIDATION_NO = 1
, LIQUIDATION_DATE = [result from snippet above].DeathDate
Where EPI2..EPI.PLANT.IMONo = [result from snippet above].IMONo
我不确定我的解释是否足够,请随时询问其他信息!
先谢谢, 沃纳
答案 0 :(得分:0)
我建议先从远程服务器中选择数据并存储所需的数据,例如在temptable中,因为LinkedServer和更新可能会产生一些副作用(例如,在远程表上执行表扫描,如果涉及更新,你不会想到它等) - 但这取决于你的确切用法/场景。
SELECT * INTO #tmpTable FROM LINKEDSERVER.EPI.dbo.PLANT WHERE ....
UPDATE EPI2..EPI.PLANT SET KIND_OF_LIQUIDATION_NO = 1, LIQUIDATION_DATE = t.DeathDate FROM #tmpTable t INNER JOIN EPI2..EPI.PLANT p on t.IMONo = p.IMONo