2

有人可以为我指出这种(对我来说很奇怪)行为的相关 BOL 信息吗?

为了快速查询,我必须加入同一张表(相同的数据库名称、差异服务器)的 prod 和 staging 副本。所以我只需要一个完全合格的加入。

这一个错误:

SELECT top 10 *
FROM [172.26.196.105\Staging].[DbName].[dbo].[TableName] 

这个有效:

SELECT top 10 *
FROM [USCASQL01\STAGING].[DbName].[dbo].[TableName]

编辑:澄清......显然不是连接,这些选择只是我组装我的暂存数据库/表的完全限定名称。这不是链接服务器,而是我连接的服务器。

当然,这些指的是同一个例子。我使用了 IP 地址\InstanceName,因为它显示在我的对象资源管理器中,它返回错误 - “在 sys.servers 中找不到服务器 'IP 地址\InstanceName'。” 确实,sys.servers 存储了计算机名\InstanceName,它可以工作。

为什么一个工作而不是另一个?IOW,当它在对象资源管理器中解析得很好时,为什么它不能解析 TSQL 中的 IP/实例名称?顺便说一句,我们经常将 IP 存储在 sys.servers 中,而这个恰好不是。

此外,我还记得 SQL Server7(早在过去),这是一个允许您为 ip 创建友好名称别名的实用程序。现在找不到了,还有吗?

TIA

4

1 回答 1

2

这是因为四部分限定名称的第一部分是按名称引用链接服务器,而不是按 IP 或网络名称。因此,如果您没有设置链接服务器,那么您会遇到遇到的错误。

要添加链接服务器,您需要查看sp_addlinkedserver.

这是描述四个部分名称如何工作的 BOL 页面。

于 2013-10-08T22:48:44.743 回答