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)
我知道这已经得到了回答,但这对我有用。
命名链接服务器 [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)