sql-server - 当 SQL Server 连接字符串中未指定端口号时会发生什么情况?

标签 sql-server

我的本​​地计算机上有两个 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/

相关文章:

sql-server - 在 SQL Server 中插入 XML

sql - T-SQL 递归查询 - 如何做?

sql-server - SSIS发送邮件文件附件失败

mysql - MySQL 中的排序规则

python - 在Python中使用pyodbc在sql server中使用内连接更新语句

c# - 如何从数据库在谷歌地图上添加位置(标记)..?

c# - SQL 阅读器多个结果不返回所有行

sql - SQL Server 中 Information_schema 与 sys 表之间的区别

sql-server - 在没有日历表的情况下查找周结束日期的有效方法

php - 如何通过 PHP 将 Unicode 数据更新到 SQL Server?