2013-05-07 25 views
1

是否可以在鏈接服務器上使用合併語句?如果是這樣如何?如何在鏈接服務器上使用合併

我曾嘗試以下,但它產生錯誤消息

一個MERGE語句的目標不能是遠程表,遠程 視圖,或在遠程表的圖。

EXEC sp_addlinkedserver 
@server=N'devServer', 
@srvproduct=N'', 
@provider=N'SQLNCLI', 
@datasrc=N'192.168.2.58\SQLSERVER'; 

EXEC sp_addlinkedserver 
@server=N'localServer', 
@srvproduct=N'', 
@provider=N'SQLNCLI', 
@datasrc=N'localhost\SQLSERVER'; 

Merge devServer.<dbName>.dbo.<tableName> as Target 
USING localServer.<dbName>.dbo.<tableName> as Source 
On (Source.HubID = Target.HubID) 
When Matched then 
    update set 
     NAME = Source.NAME, 
     CODE = Source.CODE, 
     IPAddress = Source.IPAddress 
When Not Matched Then 
    Insert(, , ,) 
    Values (, , ,); 

    select * from sys.Servers 
+0

您可以在'devServer'上運行您的語句,並只使用鏈接的服務器作爲您的源。 – 2013-05-07 08:47:12

回答

3

這不是在Microsoft SQL Server 2008支持從msdn documentation

target_table不能是遠程表。

您可以閱讀更多關於它here

+1

是的,我讀過,我正在尋找解決方法,但謝謝! – Yohannes 2013-05-08 06:18:44

+0

@Abi你只是想同步服務器?一種方式還是兩種方式?你必須使用合併? – 2013-05-08 13:44:10

相關問題