我想知道是否有任何其他的替代方法,而不是使用此連接來執行遠程更新。我是使用鏈接服務器的新手,並且我已經讀過連接可能表現不佳(取決於實現)。作爲參考,本地表很小,遠程表很大,它們都有相同的模式和表名。SQL Server遠程更新替代方案
[更新]
- 補充說明的是,表名和模式是相同的。
- 增加執行計劃。
這工作:
UPDATE remoteTable
SET remoteTable.[Data] = mylocalTable.[Data]
FROM [RemoteServer].[MyDatabase].[dbo].[MyTable] remoteTable
INNER JOIN [dbo].[MyTable] myLocalTable ON (remoteTable.[Id] = myLocalTable.[Id])
這些不工作。我試過以下查詢並得到這些錯誤。
UPDATE [RemoteServer].[MyDatabase].[dbo].[MyTable]
SET [Data] = [dbo].[MyTable].[Data]
FROM [dbo].[MyTable]
WHERE [Id] = [dbo].[MyTable].[Id])
的對象 「RemoteServer.MyDatabase.dbo.MyTable」 和 「dbo.MyTable」 在FROM子句中具有相同的名稱曝光。使用相關名稱來區分它們。
UPDATE [RemoteServer].[MyDatabase].[dbo].[MyTable]
SET [Data] = mylocalTable.[Data]
FROM [dbo].[MyTable] myLocalTable
WHERE [Id] = myLocalTable.[Id])
不明確的列名 '身份證'。
UPDATE [RemoteServer].[MyDatabase].[dbo].[MyTable]
SET [Data] = mylocalTable.[Data]
FROM [dbo].[MyTable] myLocalTable
WHERE ([RemoteServer].[MyDatabase].[dbo].[MyTable].[Id] = myLocalTable.[Id])
多部分標識符 「RemoteServer.MyDatabase.dbo.MyTable.Id」 不能被約束。
MERGE [RemoteServer].[MyDatabase].[dbo].[MyTable] remoteTable
USING [dbo].[MyTable] localTable ON (remoteTable.[Id]=localTable.[Id])
WHEN MATCHED THEN
UPDATE
SET [Data] = localTable.[Data]
;
一個MERGE語句的目標不能是遠程表,遠程視圖,或在遠程表的圖。
「'我是新來的使用鏈接服務器,我讀過連接可能表現不佳」 - 所以,你的表現如何? –
不知道爲什麼你熱衷於去除連接。看起來你需要做的就是修復那些相當簡單的語法問題,而且你很好。 – usr
我很好地使用連接我只想知道是否有更好的方法來做到這一點,或者我可以將它與之進行比較。 @usr你能幫我解決語法問題嗎? AFAIK只能在from子句中使用表別名來進行更新,因此只留下一個連接。我不確定如何解決多部分標識符問題。 – user3811205