我们有一台 SQL Server 2008 服务器,我成功地将它迁移到装有 SQL Server 2019 的新计算机上。
SQL Server 2008 服务器名称是 123.123.123.123。
它有两个实例,名为:123.123.123.123 和 123.123.123.123\ABC。
SQL Server 2019 服务器名称为 CMP123456。
实例名为:CMP123456 和 CMP123456\ABC。
我想在 2019 服务器上使用别名,因为不幸的是,一些程序员将实例名称硬编码到他们的代码中。
我创建了两个别名:
[123.123.123.123 TCP 1433 localhost]
[123.123.123.123\ABC TCP 1433 localhost\ABC]
当我使用 SSMS 登录时,两个别名都将我连接到 CMP123456。我无法创建将我连接到 CMP123456\ABC 的别名。
这些是我尝试过的别名。
它们都因“找不到服务器”错误而失败:
[123.123.123.123\ABC TCP 1434 localhost\ABC]
[123.123.123.123\ABC TCP 1433 CMP123456\ABC]
[123.123.123.123\ABC TCP 1433 ABC]
[(无别名)在这种情况下,我希望一个 localhost 别名适用于两个实例。]
有任何想法吗?不允许两个别名是 SQL Server 2019 的错误/功能吗?
对于前两个别名,您都指向 1433,这是默认实例。这就解释了为什么两者都转到默认实例(端口号优先于 \instance 名称)。
在您的别名配置中,使用实例名称指定反斜杠或指定别名的端口名称,以指向命名实例。
另外,请记住 SSMS 是 32 位应用程序,因此 SSMS 检查 32 位别名配置(而不是 64 位配置)。
Aliases 是一个客户端配置,因此您将在所有客户端计算机(需要这些别名)上执行此操作。该信息在注册表中,因此您可以通过某种自动方式推出这些注册表项。请注意,您可能希望同时推出 32 位和 64 位注册表项(因此两种类型的应用程序都存在别名)。32 位和 64 位注册表项位于注册表中的不同位置。
DNS 在这里帮不了您,因为 DNS 条目不能有 \Instance 名称。这就是为什么有些人让每个实例都有一个单独的 IP 地址,然后让所有实例都列在端口 1433(在他们的 IP 上),以便通过 DNS 配置“重新路由”。这对您没有帮助,因为您已经有客户端,包括连接字符串中的实例名称。
有一个命名约定
在你的情况下
看更多
https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/naming-conventions-for-computer-domain-site-ou
也不要将计算机命名为 localhost 这真的很糟糕,因为您不遵守约定
见维基百科
简而言之 localhost 是坏的,第二个名字是反对命名的,并且不起作用