3

次のコマンドを実行して、別のサーバー インスタンスを含めました。

EXEC sp_addlinkedserver @server='Server'

今、これを使用してこれらのデータベースを同期しようとしています:

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  

これにより、次のエラーが発生しました。

FROM 句のオブジェクト "LocalDB.dbo.tableName" と "Server.ServerDB.dbo.tableName" には、公開されている同じ名前があります。相関名を使用してそれらを区別します。

それで、それをいじった後、私はこれのさまざまな表現を試みました:

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 

しかし、それらはすべて、ある種のエラーの表現を私に与えてくれます:

マルチパート識別子 "Server.ServerDB.dbo.tableName.allrows" をバインドできませんでした。

誰かが私が見逃しているものを見つけることができますか?

4

2 に答える 2

3

結合で更新する場合は、次の構文を使用する必要があります。

UPDATE s
SET s.[columnName] = l.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] s
INNER JOIN
     [LocalDB].[dbo].[tableName] l
ON 
     l.id = s.id 
于 2015-06-17T17:03:28.523 に答える
2
UPDATE
    serverDB
SET 
    [columnName] = localdb.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] serverDB
INNER JOIN
     [LocalDB].[dbo].[tableName] localDB
ON 
     serverDB.id = localDB.id
于 2015-06-17T17:03:45.453 に答える