题 单个SQL Server实例可以有多个名称吗?


这几乎都在标题中。我希望答案是否定的,但是想要确认。基本上,可以通过多个名称引用单个SQL Server实例。我知道您可以设置DNS以将多个名称解析为同一个IP /服务器,但这会如何影响连接到SQL Server?


5
2017-07-05 19:09






答案:


除非您使用的是基于SSL的SQL Server,否则SQL Server不会对您要连接的DNS名称发表任何看法。除非您连接到特定的TCP端口号,否则无法播放实例的名称。


7
2017-07-06 02:02



这是完全错误的。当然可以在SQLServerManager14.msc => SQL-Native Client => Aliases下使用实例(对于SSMS,请务必输入32位版本)。可以使用hosts文件(C:\ Windows \ System32 \ drivers \ etc \ hosts)或将服务器名称添加到内部DNS服务器来播放主机名。您需要将别名转发到正确的服务器和端口(实例),默认为1433。例如localhost \ SQLEXPRESS => localhost,1433。您可能需要在网络配置下启用TCP / IP才能使其正常工作(SQLServerManager14.msc)。 - Quandary
不,我的答案仍然是正确的。添加别名不会改变实例的名称,正如您所指出的那样,您可以随心所欲地拥有主机名,这与我所说的相同。谢谢你同意我的意见。 - mrdenny
是的,它不会更改实例的名称,但它会使已安装的实例在另一个实例名称下可访问,就好像它是另一个实例一样。例如,我可以将localhost / SQLEXPRESS别名为localhost,然后我可以将SSRS项目与具有SQLEXPRESS的其他用户一起使用,而无需更改SSRS项目中的连接字符串。而且每次拉动最新版本时,他们也不必改变它。一个不那么麻烦的合并冲突。从远程计算机连接时也可以使用。 - Quandary
别名只能在创建它们的计算机上使用。这是关于它们的Microsoft文档。 docs.microsoft.com/en-us/sql/database-engine/configure-windows/... SQL Server连接协议中没有任何内容允许将别名存储在服务器上。客户如何获得此信息?客户从哪里获取此信息?操作系统询问是否可以使用多个DNS名称连接服务器。答案是肯定的,SQL并不关心。这并不是完全有争议的。 - mrdenny
唉,你是对的,我最后通过谷歌搜索如何更改实例名称。我只阅读标题,而不是实际问题。该死的投票被锁定了。我无法撤消。 - Quandary


我发现在SQL Server配置管理器中创建指向同一sql server的别名更容易。


4
2017-07-05 20:27



对于管理工作室,请务必同时输入32位本机客户端的别名,而不仅仅是64位本地客户端。 SQLServerManager14.msc或SQLServerManager <YOUR_VERSION> .msc。 - Quandary


SERVER / INSTANCE的SERVER部分可以是任何解析为正确地址的名称,可以是额外的A记录,也可以是CNAME或HOSTS文件中的名称。
这里唯一的警告是伪名称可能会破坏Kerberos身份验证。使用Kerberos的SQL是一个有趣的野兽,SQL客户端对该地址执行反向DNS查找,然后使用它获得的名称来构建SPN,因此只要反向查找获取服务器的原始主机名,它就应该工作。此外,SQL将回退到NTLM,因此如果您出于某种原因需要Kerberos,这只会导致问题,例如您正在使用委派。
但是,您无法使SQL响应多个INSTANCE名称。但是,您可以在CLIENT配置中定义别名。

当您连接到SQL Server时,您指定的实例名称将发送到服务器上的SQL浏览器服务,浏览器服务将使用所请求实例正在侦听的TCP端口进行响应。可以在连接字符串或别名中指定此端口号。我刚刚创建了一个名为NEW的别名,指向mysqlserver端口1966,它有一个监听它的命名实例。然后我只需指定一个服务器名称NEW即可连接到命名实例。
这种方法有两个缺点。首先是每个客户端都需要配置,我不知道是否有任何方法可以推送该配置。第二个是SQL实例通常使用动态端口。如果要定义别名,则需要更改服务器,以便它侦听客户端可以配置为连接到的固定端口号。


4
2017-07-05 20:42





我通过在HOSTS文件中添加一个条目来运行一个简单的测试,看起来SQL Server并不关心连接字符串中使用的名称。我一直认为这部分很重要,但似乎没有。

在这种情况下,我没有连接到命名实例,只是默认实例。我会假设只要服务器的一部分 SERVER\INSTANCE 匹配,您也可以使用命名实例执行此操作。但是,我没有任何可以测试的命名实例。


1
2017-07-05 19:13





根据我的经验,Tim可以为服务器提供许多DNS条目,您不应该遇到服务器上的默认SQL实例(或任何实例)的问题。

实例本身在服务器上与必须运行的SQL浏览器服务区分开来,以便可以看到命名实例。如果不是,通常(100次中的99次),此服务未运行时唯一可以看到的实例是默认实例。

我希望我能以某种方式帮助你:)


1
2017-07-05 19:51