Search code examples
sqlsql-server-2008merge

How to use merge on linked servers


Is it possible to use the merge statement on linked servers? If so how?

I have tried the following but it generates an error message

The target of a MERGE statement cannot be a remote table, a remote view, or a view over remote tables.

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

Solution

  • This is not supported in Microsoft SQL Server 2008. From the msdn documentation,

    target_table cannot be a remote table.

    You can read more about it here.