无法找到TSQL多部分标识符

时间:2013-04-09 20:12:42

标签: sql sql-server tsql

我们正尝试通过此查询在另一台服务器上将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”。

我们缺少一些令人眼花缭乱的东西。非常感谢提前!

1 个答案:

答案 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)