我最近看到一个奇怪的案例,仍然不知道背后的原因是什么。在我的一台开发服务器上,有两个 SQL 服务器实例正在运行——一个是默认实例,另一个是 UAT 实例。
最近我们对这两个实例的默认端口进行了更改,并与开发团队和其他利益相关者进行了沟通,以开始他们的更改并对其进行测试。为了不影响他们现有的应用程序,端口 1433 保留在默认实例上。因此,以下是要连接的服务器和端口的详细信息:
默认连接 --> Server_Name,35683
命名 (SIT) 实例的连接 --> Server_Name\SIT,35685
这两个实例都有相似的数据库,但是由于它们指向不同的环境,因此数据集不同。
一位高级开发人员将连接用作 Server_name\SIT,35683,这意味着实例和端口不匹配。他使用的是 SIT 实例,但是默认实例的端口,它正在将他连接到默认实例。
当我在他的办公桌前并且我们正在测试一些代码时发现了这一点,我注意到了这一点,因为我的更改没有反映在默认实例中,因为我在 SIT 实例中进行了更改。
有人可以解释这种行为以及如何解决这个问题吗?
端口号规范覆盖实例名称,有效地完全忽略实例名称。例如,即使实例名称无效,您也可以使用“YourSqlServer\badname,1433”使用 SSMS 进行连接。
当实例名称省略端口号时,客户端查询 SQL Server 浏览器以确定所需的端口。