How to update a SQL table from another table when they are on different servers

I have already run the following command to enable another server instance.

EXEC sp_addlinkedserver @server='Server'

      

Now I am trying to sync these databases using this:

UPDATE
    [Server].[ServerDB].[dbo].[tableName] 
SET 
    [Server].[ServerDB].[dbo].[tableName].[columnName] = [LocalDB].[dbo].[tableName].[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName], [LocalDB].[dbo].[tableName]
WHERE 
    [Server].[ServerDB].[dbo].[tableName].id = [LocalDB].[dbo].[tableName].id  

      

This gave me the following error:

The "LocalDB.dbo.tableName" and "Server.ServerDB.dbo.tableName" objects in the FROM clause have the same public name. Use correlation names to differentiate between them.

So, after fiddling with it, I tried various versions of this:

UPDATE
    [Server].[ServerDB].[dbo].[tableName] 
SET 
    [Server].[ServerDB].[dbo].[tableName].[columnName] = [LocalDB].[dbo].[tableName].[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] serverDB
INNER JOIN
     [LocalDB].[dbo].[tableName] localDB
ON 
     serverDB.id = localDB.id 

      

But they all give me some idea of ​​the error:

The multipart identifier "Server.ServerDB.dbo.tableName.allrows" cannot be linked.

Can someone identify what I am missing?

+3


source to share


2 answers


You need to use this syntax when updating with a join:



UPDATE s
SET s.[columnName] = l.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] s
INNER JOIN
     [LocalDB].[dbo].[tableName] l
ON 
     l.id = s.id 

      

+3


source


UPDATE
    serverDB
SET 
    [columnName] = localdb.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] serverDB
INNER JOIN
     [LocalDB].[dbo].[tableName] localDB
ON 
     serverDB.id = localDB.id

      



+2


source







All Articles