我的本地计算机上有两个 SQL Server 实例。它们都监听不同的端口。我安装的第一个实例运行在默认端口:1433。我已将另一个实例设置为监听端口 1434。
我的应用程序正在使用一些旧的共享代码来生成连接字符串。所以直到现在我才真正知道那里发生了什么。由于一项新要求,我发现自己需要检查用于连接 SQL Server 的连接字符串。
我发现,为连接到每个 SQL 实例而构建的连接字符串不包含网络库,也不包含端口号作为数据源的一部分。数据源刚刚设置为 <Server Name>/<Instance Name>
。我确实在 MS 文档中发现,如果不包含网络库,那么它将被视为 (local)
,但它并没有真正解释如何 (local)
已治疗。
所以我的问题是为什么这种格式的连接字符串能够连接到在非默认端口上运行的 SQL Server 实例?仅当实例位于本地计算机或本地网络上时,这才有效吗?我可以放 <ip>/<sql instance>
如果服务器是远程的,则没有端口?
我只是需要弄清楚它是如何工作的,以及何时需要端口号以及何时它是可选的,因为我试图使我的连接 UI 对于我们的用户来说尽可能简单。
最佳答案
有一种叫做“SQL Server Browser Service”的东西:
http://technet.microsoft.com/en-us/library/ms181087(v=sql.105).aspx
旨在为客户端提供有关sql server实例、端口的信息。它实际上监听 UDP 端口 1434。 关闭此服务后,您仍然可以连接到实例,但需要指定 TCP/IP 端口。
关于sql-server - 当 SQL Server 连接字符串中未指定端口号时会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21730662/