查询SQL链接服务器仅从一台服务器提取数据

查询SQL链接服务器仅从一台服务器提取数据,sql,sql-server,linked-server,Sql,Sql Server,Linked Server,我有四台SQL Server,它们的命名方式如下: dbs dbs2 dbs3 dbs4 我在dbs3上有一个表,叫做database1中的table1。其他服务器上不存在此表。但是,当我运行查询时: select * from dbs.database1.dbo.table1 (or any of the database servers) 它返回的结果就像我在dbs3上查询现有表一样。这就像DBMS忽略了查询中的4部分命名,并从dbs3上的表返回结果,而不管我在4部分命名约定中尝试指定

我有四台SQL Server,它们的命名方式如下:

dbs
dbs2
dbs3
dbs4
我在dbs3上有一个表,叫做database1中的table1。其他服务器上不存在此表。但是,当我运行查询时:

select * 
from dbs.database1.dbo.table1 (or any of the database servers)

它返回的结果就像我在dbs3上查询现有表一样。这就像DBMS忽略了查询中的4部分命名,并从dbs3上的表返回结果,而不管我在4部分命名约定中尝试指定哪个服务器。你知道这里会发生什么吗。服务器显示在“链接服务器”列表中。

如果您可以在不破坏内容的情况下进行更改,或者您认为它已经损坏得足够多,我建议重新创建链接服务器。如果链接服务器是另一台SQL server,则可以执行以下操作:

exec sp_dropserver 'dbs';
exec sp_addlinkedserver 'dbs';

这将创建一个带有默认配置的链接服务器定义,该定义适用于大多数应用程序,以后仍可以进行调整。

选择名称是什么,sys.servers生成的数据源?您是否验证了4个链接的服务器实际上链接到不同的服务器?它返回:DBS NULL DBS2 NULL DBS3 DBS3 DBS4 NULL重新检查链接的服务器定义,如果可能,重新创建它们。显然,只有DBS3配置正确。我从来没有见过一个链接服务器的数据源是空的,所以这很有趣。DBS3是我登录并使用SSMS的服务器。它位于链接服务器定义中。链接服务器似乎已创建,但列出的所有表都与DBS3上的表相同。使用正确的凭据重新创建链接服务器修复了此问题。现在要让select跨链接服务器工作…@SMSRANGE:我们将准备好回答有关此问题的任何后续问题:-出人意料地把它钉死了。风中的桌子;-谢谢你!