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
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.