sql - 当它们在不同的服务器上时如何从其他表更新 SQL 表

标签 sql sql-server database sql-update sql-merge

我已经运行了以下命令来包含另一个服务器实例。

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  

这给了我以下错误:

The objects "LocalDB.dbo.tableName" and "Server.ServerDB.dbo.tableName" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

所以在摆弄它之后,我尝试了各种演绎:

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 

但它们都给我某种错误的再现:

The multi-part identifier "Server.ServerDB.dbo.tableName.allrows" could not be bound.

有人能发现我遗漏了什么吗?

最佳答案

使用联接更新时需要使用此语法:

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

关于sql - 当它们在不同的服务器上时如何从其他表更新 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30897519/

相关文章:

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - Select * from table where id=(很多不同的值)...如何编写可以执行此功能的查询?

sql - 两个指数陷入僵局

mysql - 在数据库设计中如何避免循环引用?

MySQL - GROUP BY - 单独评估,然后组合

php - 根据范围从收据簿中提取缺失的号码

MySQL 隔离级别可重复读取和更新中的原子增量

c# - 存储过程不会将控制返回给 C# 代码

sql-server - 使用标识列或搜索列上的索引加速 SQL 查询?

php - 为 foreach 提供的参数无效; PDO