我们正尝试通过此查询在另一台服务器上将LastUpdateDateTime
列更新为另一个数据库中Stamp
列的值:
update [NEWTON-DB].NEWTON.dbo.vital_signs
set lastupdatedatetime =
coalesce ((select top 1 stamp
from [SERVER2].NEWTON.dbo.vital_sign
where rowguid in (select oldrowguid
from [NEWTON-DB].NEWTON.dbo.import_log
where tablename = 'vital_sign'
and newid = [NEWTON-DB].NEWTON.dbo.vital_signs.id)),
coalesce(lastupdatedatetime, getutcdate()))
如果有意义的话,import_log表只是基于旧rowguid
获取新id的内部联接。
当他们在同一台服务器上时,此查询工作正常,但迁移后我收到以下错误:
无法绑定多部分标识符“NEWTON-DB.NEWTON.dbo.vital_signs.id”。
我们缺少一些令人眼花缭乱的东西。非常感谢提前!
答案 0 :(得分:3)
5这样的[NEWTON-DB].NEWTON.dbo.vital_signs.id
部分标识符不能正常工作
您需要对表进行别名,然后使用别名
e.g。
Select top 1 stamp
from [SERVER2].NEWTON.dbo.vital_sign t
where rowguid in (select oldrowguid
from [NEWTON-DB].NEWTON.dbo.import_log
where tablename = 'vital_sign'
and newid = t.id)