2011-06-20 180 views
6

我正在尝试将数据库字段从一个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) 

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

+0

如果你发布这样的事情,并与*它提供了一个错误*戏弄我们,这将是**告诉我们的最佳实践* *确切的错误是什么!这将是一个巨大的帮助,看看probelm可能是什么...... –

+0

@marc_s:我认为一个明显的错误是'UPDATE'中的表别名。 (“关键字附近的语法不正确”为'。“) – a1ex07

+1

@ a1ex07:这是一个猜测 - 一个很好的猜测(upvoted你为这个好猜测),但仍然是一个猜测......这是关于一般原则 - 不要只是说“有一个错误” - 如果你这么说 - 告诉我们这是什么错误! –

回答

15

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

窗体:“UPDATE t SET field = val FROM table1 t”也适用。 –

+0

显然,'[dbo]'部分比我想象的更重要。不过,你只是救了我的屁股!不胜感激。 –

0

我相信你必须有一个数据库链接(链接服务器)才能工作。

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

这里是一个网址,可以帮助 http://msdn.microsoft.com/en-us/library/ms188279.aspx

哈维Sather

相关问题