【问题标题】:How to specify localhost as the server name in t-sql?如何在 t-sql 中指定 localhost 作为服务器名称?
【发布时间】:2015-05-17 11:14:45
【问题描述】:

我在一些选择代码中动态连接到不同的数据库服务器和数据库。但是,当我进行测试时,我会使用本地机器服务器完成所有操作。

有没有在 T-SQL 代码中明确指定 'LOCALHOST' 作为服务器名称?有点像这样:

SELECT 
 *
FROM
 [LOCALHOST].[DBName].[Schema].[TableName]

它必须存在的原因是因为值是动态来自表的。出于测试目的,我只想将其全部设置为指向本地机器。

但是,如果我将本地机器服务器的实际名称放在那里,例如PHILS-PC 然后,如果我移动到具有自己本地 SQL Server 副本的不同开发计算机,我必须更新所有表以使用该本地服务器的名称。我以为 LOCALHOST 可以解决这个问题,但它在 T-SQL 代码中不起作用。我收到此错误:

在 sys.servers 中找不到服务器“LOCALHOST”。验证 指定了正确的服务器名称。如有必要,执行存储的 过程 sp_addlinkedserver 将服务器添加到 sys.servers。

【问题讨论】:

  • 运行select * from sys.servers会得到什么?
  • 其实答案就在那里:If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers
  • 所以我将 localhost 作为服务器添加回自身?
  • @kaybee99 我得到了实际本地机器的名称。所以像“John-PC”这样的东西取决于我使用的笔记本电脑
  • 这些查询在哪里执行?在 SSMS、SQLCMD 或其他应用程序上?

标签: sql-server sql-server-2012 sql-server-2014


【解决方案1】:

不,您不必提及本地主机。本地主机上下文是在您最初连接到 sql server 时确定的。无论是 SSMS 还是应用程序代码,一旦您与 sql server 建立连接,它就会被认为是您的 localhost。

然后从那里执行的任何代码都在您建立连接的服务器上执行,该服务器是该查询的本地主机,对于任何跨服务器查询,您必须使用链接服务器查询

FROM [LinkedServer].[Database].[Schema].[table]

故事的寓意,您不会在查询中提及 Localhost,因为据了解,您只能在连接到服务器后执行 sql 代码,然后在 localhost 的上下文中执行任何操作,这显然是有道理的.

【讨论】:

  • ServerName 存储在我的每个客户端的表中。在生产代码中,它将连接到他们的服务器。为了进行测试,我需要使用 LocalHost 作为其实际服务器名称的占位符,因为我在本地机器的服务器(即测试服务器)中保留了他们的数据库副本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
相关资源
最近更新 更多