SQL Server 在使用不同实例的端口号时忽略实例名称

Lea*_*min 4 sql-server instance tcpip

我最近看到一个奇怪的案例,但仍然不知道它背后的原因是什么。在我的一台开发服务器上,有两个 SQL 服务器实例正在运行——一个是默认的,另一个是 UAT 实例。

最近,我们对这两个实例的默认端口进行了更改,并将相同的内容传达给开发团队和其他利益相关者,以开始他们的更改并对其进行测试。为了不影响他们现有的应用程序,端口 1433 保持在默认实例上。因此,以下是要连接的服务器和端口的详细信息:

默认连接 --> Server_Name,35683

Named(SIT) 实例的连接 --> Server_Name\SIT,35685

默认实例 TCP/IP 属性

命名实例 TCP/IP 属性

两个实例都具有相似的数据库,但是由于它们指向不同的环境,因此数据集不同。

一位高级开发人员使用连接作为 Server_name\SIT,35683 意味着实例和端口不匹配。他正在使用 SIT 实例但是默认实例的端口,它将他连接到默认实例。

当我在他的办公桌前并且我们正在测试一些代码时发现了这一点,我注意到了这一点,因为我的更改没有反映在默认实例中,因为我在 SIT 实例中进行了更改。

有人可以解释这种行为以及如何解决这个问题吗?

Dan*_*man 7

端口号规范会覆盖实例名称,有效地完全忽略实例名称。例如,即使实例名称无效,您也可以使用 SSMS 使用“YourSqlServer\badname,1433”进行连接。

当实例名称省略端口号时,客户端会查询 SQL Server 浏览器以确定所需的端口。