我是MS SQL的新手,我正在尝试做一些看似简单的事情,但却让我发疯。
我想编写一个查询来从两个数据库中提取数据。每个数据库都在同一DEV机器上的不同实例上。 (一个是MS SQL 2008,另一个是MS SQL 2005)。我正在使用Microsoft SQL Server Management Studio(MSSMS)。
我已经找到了基础知识。我知道查询的格式以及我需要做什么。我的大问题是弄清楚每台服务器的名称是什么?
SELECT LastName
FROM [servername1].CHA2.dbo.Customer
UNION
SELECT LastName
FROM [servername2].OBXKites.dbo.Contact
ORDER BY LastName
我使用了我与MSSMS (DLPT\HENRY)
连接的服务器名称以及@@SERVERNAME
SELECT @@SERVERNAME returns DLPT\HENRY
我试过
DLPT \ HENRY.CHA2.dbo.Customer
无效
我试过没有DLPT HENRY.CHA2.dbo.Customer
无效
我需要在将来查询服务器的名称在查询中使用的内容。
答案 0 :(得分:0)
[DLPT\HENRY].CHA2.dbo.Customer
namo包含反斜杠,在标识符中通常是非法的。用括号括起非法名称。
请注意,您只包含服务器名称。换句话说,它是[DLPT \ HENRY] .CHA2.dbo.Customer,而不是[DLPT \ HENRY.CHA2.dbo.Customer]。
答案 1 :(得分:0)
您必须配置链接服务器。然后,只有不同的SQL Server实例能够相互通信。
答案 2 :(得分:0)
不幸的是,默认情况下,您无法访问单独的SQL Server实例中的数据库中的表。这里有几个选项 - 既不简单也可能需要DBA的帮助:
1)使用这样的链接服务器: http://technet.microsoft.com/en-us/library/ff772782(v=sql.110).aspx
然后,您将能够以INSTANCENAME.DatabaseName.SchemaName.TableName
格式引用第二个表格。2)使用复制将表从第二个数据库获取到第一个数据库。然后第二个表的内容将或多或少地实时同步到第一个数据库