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

时间:2011-06-20 15:42:23

标签: sql-server sql-server-2005 tsql

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

我们的生产SQL Server为[spdbprod.test.com\spprod],我们的质量检查服务器为[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)

我在这里缺少什么? 的错误: UPDATE。 (“关键字'附近的语法错误为'。”)

4 个答案:

答案 0 :(得分:18)

您正在以错误的方式使用表别名。你不能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)

答案 1 :(得分:0)

我认为你必须拥有一个数据库链接(链接服务器)才能实现这一点。

我在这里无法访问两个SQL服务器,所以我无法测试它,但我确定你需要链接。 您有链接服务器设置吗?

这是一个可能有帮助的网址 http://msdn.microsoft.com/en-us/library/ms188279.aspx

哈维萨瑟

答案 2 :(得分:0)

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

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

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

示例:

  • 我们有一个[Customers]
  • 我们要为[CustomerAddress]更新CustomerId = 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

通用格式:

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>

答案 3 :(得分:0)

  1. 您需要在服务器对象下添加链接服务器
  2. 您可以使用“ CHOOSEN-NAME”或“ CHOOSEN-NAME”来命名该链接服务器 [ipaddress,端口号]

如何使用tsql添加链接服务器,请检查以下链接:how to find linked server

出于示例目的,假设我已命名链接服务器 “ DESTINATION_SERVER”和数据库名称为“ DESTINATION_DB”和表 名称为“ DESTINATION_TBL”。然后从您的源服务器中查询如下:

@property (strong) GeoNotificationManager* geof;