一个SQL Server实例可以有多个名字?

这几乎都是标题。 我希望答案是否定的,但想问一下确定。 基本上,一个SQL Server实例可以被多个名称引用。 我知道你可以设置DNS来parsing多个名称到同一个IP /服务器,但这将如何影响连接到SQL Server?

除非您通过SSL使用SQL Server,否则SQL Server不会为您连接的DNS名称担心。 除非您连接到特定的TCP端口号,否则无法播放实例的名称。

SERVER / INSTANCE的SERVER部分可以是parsing为正确地址的任何名称,可以是额外的Alogging或CNAME,也可以是HOSTS文件中的名称。
这里唯一需要注意的是,假名称可能会破坏Kerberos身份validation。 带有Kerberos的SQL是一个有趣的野兽,SQL客户端在地址上进行反向DNS查找,然后使用它获得的名称来构buildSPN,所以只要反向查询获得服务器的原始主机名,它就应该可以工作。 此外,SQL将回退到NTLM,所以这只会导致一个问题,如果您需要Kerberos出于某种原因,就像您使用的是委派。
尽pipe如此,您不能让SQL响应多个INSTANCE名称。 但是,您可以在CLIENTconfiguration中定义一个别名。

当您连接到SQL Server时,您指定的实例名称被发送到服务器上的SQL浏览器服务,浏览器服务响应请求的实例正在侦听的TCP端口。 可以在连接string或别名中指定此端口号。 我刚刚创build了一个名为NEW的别名,指向mysqlserver端口1966,它有一个名为实例的侦听。 然后,我可以通过简单地指定服务器名称NEW来连接到命名实例。
这种方法有两个缺点。 首先是每个客户端都需要configuration,我不知道是否有任何方法来推送configuration。 第二个是SQL实例通常使用dynamic端口。 如果你想定义别名,那么你需要改变服务器,以便监听一个固定的端口号,客户端可以被configuration为连接到这个端口号。

我发现更容易在SQL Serverconfigurationpipe理器中创build指向同一个sql server的别名。

我通过向HOSTS文件添加一个条目来运行一个简单的testing,似乎SQL Server不关心连接string中使用的名称。 我一直认为这部分是重要的,但似乎没有。

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

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

这些实例本身在服务器上与必须运行的SQL浏览器服务区分开来,以便可以看到指定的实例。 如果不是,通常(100次中有99次),当这个服务没有运行时可以看到的唯一实例是默认实例。

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