2017-09-24 59 views
0

我正在嘗試對鏈接服務器(Server2)上的表執行更新。我從我的服務器(Server1)運行更新。當我執行下面的代碼無法綁定多部分標識符更新查詢

IF EXISTS (SELECT ID FROM Server2.database.dbo.table) 
UPDATE Server2.database.dbo.table 
SET Server2.database.dbo.table.Revoked = a.Revoked 
FROM Server1.database.dbo.table a 
WHERE Server2.database.dbo.table.ID = a.ID 

總是收到以下錯誤消息:

多部分標識符「Server2.database.dbo.table.Revoked」不能被約束。

有關如何解決此問題的任何想法?

+0

將服務器實例名放在方括號[]中, –

回答

1

SQL正在抱怨前綴的數量,正確的編寫方式應該是:[linkedservername].[databasename].[tableschema].[table]

如果將列名添加到上面的語法中,它將被理解爲另一個前綴。因此,您可以創建更新的別名,並引用別名而不是整個引用。

IF EXISTS (SELECT ID FROM Server2.database.dbo.table) 
BEGIN 
    UPDATE MyAlias 
    SET MyAlias.Revoked = a.Revoked 
    FROM Server2.database.dbo.table MyAlias 
     INNER JOIN Server1.database.dbo.table a 
      ON MyAlias.ID = a.ID 
END 
相關問題