【问题标题】:Column name in SQL Server fully qualified nameSQL Server 完全限定名中的列名
【发布时间】:2018-07-19 06:02:29
【问题描述】:

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

select * from my_db.dbo.test_table.test;

我收到以下错误:

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

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

为什么会这样?

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

【问题讨论】:

  • 你在哪里读到你可以在 from 子句中指定列名
  • Sql查询遵循默认的Servername.Dbname.schema.table ,因为你最后给出了.test ,第一行(my_db)被认为是服务器名称,如果你想选择特定的列写@ 987654326@
  • @HoneyBadger 请参阅我提供的链接
  • @BHouse 是的,我知道以这种方式指定列名,但 SQL Server 记录了其他内容。
  • 链接中没有这么说。它只是说你可以如何引用一个对象,它没有说你可以在 from 子句中引用一个列。

标签: sql sql-server fully-qualified-naming


【解决方案1】:

请运行sp_addlinkedserversp_addlinkedsrvlogin SP:

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-server-name-was-specified/

另外,即使它与 SQL Server 2014 相关,也可能有帮助,请参阅:Could not find server 'server name' in sys.servers. SQL Server 2014

【讨论】:

    【解决方案2】:

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

    select test from my_db.dbo.test_table
    

    【讨论】:

      【解决方案3】:

      尝试从这里重写

      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;
      

      希望有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-12
        • 2015-06-04
        • 2011-11-08
        • 2014-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多