将数据库表从一个SQL Server数据库表更新到另一个?

Jam*_*123 11 t-sql sql-server sql-server-2005

我正在尝试将数据库字段从一个SQL Server表更新到另一个SQL Server表.

我们的生产SQL Server是[spdbprod.test.com\spprod],我们的QA服务器是[spdbQA.test.com\spQA].

我需要从QA表更新生产中的表.我使用这个SQL语句,但它给出了一个错误.

UPDATE 
    [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups] as t1
SET 
    t1.Show = (Select t2.show from [spdbQA.test.com\spQA].[aspnetdb].[dbo].
[Communities_Groups] as t2 where t1.GroupID = t2.GroupdID)
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么? 错误:更新.("关键字'附近的语法不正确为'.")

a1e*_*x07 21

您以错误的方式使用表别名.你不能这样做UPDATE table1 t SET field1=val,你必须写UPDATE table1 SET field=val(或UPDATE table1 SET field=val FROM table1 t).所以将您的查询更改为

UPDATE [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups]   
SET Show = t2.show
FROM [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups] t1
INNER JOIN [spdbQA.test.com\spQA].[aspnetdb].[dbo].
[Communities_Groups] t2 ON (t1.GroupID = t2.GroupID)
Run Code Online (Sandbox Code Playgroud)

  • 形式:“UPDATE t SET field=val FROM table1 t”也有效。 (2认同)

Sha*_*Sha 5

我知道这已经得到了回答,但这对我有用。

  • 在服务器对象下添加链接服务器 | 链接服务器: Microsoft 文档
  • 命名链接服务器 [SERVER-NAME or <some ipaddress>, <some-port>]

    例如[10.0.0.200,2345]-我使用的是端口 2345 但标准的 MS SQL 端口是 1433

例子:

  • 我们有一张[Customers]桌子
  • 我们要更新[CustomerAddress]-fieldCustomerId = 123
  • 我们想使用来自名为的服务器的备份数据 [backupServer]
  • [backupServer]是我们执行 SQL 的机器

这是 SQL 代码:

UPDATE production
SET
    CustomerAddress = backupServer.CustomerAddress
FROM 
    [10.0.0.200,2345].[ProductionDatabase].[dbo].[Customers] production
INNER JOIN 
    [BackupDatabase].[dbo].[Customers] backupServer
        ON 
            production.CustomerId = backupServer.CustomerId
WHERE 
    backupServer.CustomerId = 123
Run Code Online (Sandbox Code Playgroud)

通用格式:

UPDATE production
SET
    columnName = backupServer.columnName
FROM 
    [SERVER-NAME or IP,PORT].[ProductionDatabase].[dbo].[tableName] production
INNER JOIN 
    [BackupDatabase].[dbo].[tableName] backupServer
        ON 
            production.SomeId = backupServer.SomeId
WHERE 
    backupServer.SomeId = <id>
Run Code Online (Sandbox Code Playgroud)