在同一台计算机上查询多个MS SQL数据库实例

时间:2014-07-31 21:32:54

标签: sql-server sql-server-2008 tsql

我是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

无效

我需要在将来查询服务器的名称在查询中使用的内容。

3 个答案:

答案 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)使用复制将表从第二个数据库获取到第一个数据库。然后第二个表的内容将或多或少地实时同步到第一个数据库

Read about SQL Replication here