0

我在SQL Server 文档中读到,我可以在简单 SELECT 查询的 FROM 子句中指定列名。但是当我尝试运行这个查询时:

select * from my_db.dbo.test_table.test;

我收到以下错误:

消息 7202,级别 11,状态 2,第 1 行在 sys.servers 中找不到服务器“my_db”。验证是否指定了正确的服务器名称。如有必要,执行存储过程 sp_addlinkedserver 将服务器添加到 sys.servers。

我知道这是一个 T-SQL 页面,我正在尝试运行 .

为什么会这样?

我也通过 Microsoft SQL Server Management Studio 2017 版使用 SQL Server 2017 版。

4

3 回答 3

2

尝试从这里重写

select * from my_db.dbo.test_table.test;

对此

select test_table.test,* from my_db.dbo.test_table;

它是用这么多句号编写的,它假设您正在尝试完全限定该表,因此在您尝试对服务器进行的操作中,它的处理方式如下

my db = linked server (a server other than the Server you are working on)
dbo = Schema (which is correct)
test_table = Table (Also correct)
test = just plain erroror

您要显示的字段应直接跟随关键字选择,因此如果您只想要 2 个字段,您可以编写

select test,test2 from my_db.dbo.test_table;

如果您只有一台服务器,或者更简单

select test,test2 from dbo.test_table;

或者如果您只有默认的 Schema dbo(数据库所有者)

select test,test2 from test_table;

我希望帮助

于 2018-02-08T17:12:46.543 回答
2

您不能在FROM子句中指定列,但可以在SELECT子句中指定列。

select test from my_db.dbo.test_table
于 2018-02-08T15:46:18.297 回答
0

请运行sp_addlinkedserversp_addlinkedsrvloginSP:

EXEC sp_addlinkedserver @server='MyLinkedServer'
EXEC sp_addlinkedsrvlogin 'MyLinkedServer', 'false', NULL, 'MyUserName', 'MyPassword'

之后,您可以尝试运行:select * from my_db.dbo.test_table

参考:https ://blog.sqlauthority.com/2014/08/26/sql-server-fix-error-7202-could-not-find-server-in-sys-servers-verify-that-the-correct-服务器名称已指定/

此外,即使它与 SQL Server 2014 相关可能会有所帮助,请参阅:在 sys.servers 中找不到服务器“服务器名称”。SQL Server 2014

于 2018-02-08T15:45:54.470 回答