15

吉文斯:

  • 一个 SQL Server 被命名为:DevServerA
  • 另一个被命名为:DevServerB\2K5

问题:

DevServerA,我如何编写引用的查询DevServerB\2K5

我尝试了一个示例,虚拟查询(从运行它DevServerA):

SELECT TOP 1 *  
FROM DevServerB\2K5.master.sys.tables

我得到了错误:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '\.'.

但是,我知道我的语法几乎是正确的,因为反过来也可以(从 运行此查询DevServerB\2K5):

SELECT TOP 1 *  
FROM DevServerA.master.sys.tables

请帮我弄清楚如何DevServerB\2K5DevServerA. 谢谢。

4

3 回答 3

21

在 4 部分名称中,第一部分是链接服务器的名称(即元数据对象),而不是服务器的名称(即主机名)。因此,您可以将链接服务器命名为 FOO,并让他指向主机 BAR,或实例 FOO\BAR。即使您将链接服务器对象命名为包含斜杠,您仍然可以通过简单地引用名称在多部分名称中使用它:

SELECT TOP 1 *  
FROM [DevServerB\2K5].master.sys.tables
于 2010-03-30T23:10:51.043 回答
6

尝试使用方括号:

SELECT TOP 1 *  
FROM [DevServerB\2K5].master.sys.tables
于 2010-03-30T23:09:13.410 回答
0

在 SQL SERVER 2005 上,发生了以下情况:条目:

SELECT TOP 1 *   
FROM [DevServerB\2K5].master.sys.tables 

改为

SELECT TOP 1 *   
FROM DevServerB\2K5.master.sys.tables 

通过 SQL Server 系统,您仍然会收到错误消息:'.' 附近的语法不正确。

我尝试使用以两种不同方式命名的链接服务器:“[DevServerB\2K5]”和“DevServerB\2K5”

有人有其他想法吗?

谢谢艾伦·罗伯逊

第二天添加了更正:我错了,部分。当尝试使用如下 SQL 语句创建视图时:

SELECT  *
FROM [DevServerB\2K5].TestDB.dbo.tables 

然后删除 [ 和 ] 并且无法保存视图,但是如果仅使用相同的 SQL 字符串编写查询,则它可以正常工作。

我还能够执行如下 SQL 语句:

INSERT INTO [DevServerB\2K5].TestDB.dbo.tables ( ... ) ...

我可以做我想做的事,但如果我能保存一个视图并使用一个视图,然后将其用于 [DevServerB\2K5].TestDB 数据库中的表的 SELECT、INSERT 和 UPDATE,那就更好了由于 '\' ,我尝试创建视图但未能创建视图的原始服务器。

-ASR-

于 2010-04-09T21:50:59.297 回答