我们了解,当连接到 SQL 服务器时,指定:
- < 主机名>
- < IP 地址>
- <主机或 IP>,<端口号>
ADO 或 ODBC 客户端通常使用 tcpip 进行连接。
然而,我们观察到,当客户端请求连接到:
< 服务器>\< 实例名称> 似乎客户端(本例中为 ODBC)不使用 tcpip。
- 它有什么用途?
- 我可以强制使用 tcpip 吗?
并且在这方面的行为(SQL Server 的 32 位 Windows ODBC 驱动程序)是否与旧的 dblib 客户端的行为相同?
答案1
在连接字符串中指定servername\instance
名称服务器时,它将尝试通过 SQL 浏览器(位于 UDP 端口 1434 上)进行端口解析。如果响应成功,它应该包含端口号或命名管道端点,并且连接(如果启用了 TCP/IP 或命名管道)应该成功。
这取决于:
- 启用了哪些客户端协议
- 启用了哪些服务器协议
- SQL Browser 服务是否正在运行
- 连接字符串中未指定协议
- 防火墙规则
- 客户端连接库
我可以强制使用 tcpip 吗?
当然可以!为了强制使用协议,请将其添加到连接字符串中服务器名称的开头。例如,如果您想强制使用MyServer\MyInstance
端口 5400 上的 TCPIP,则可以使用:
- 服务器 =TCP:MyServer,5400
- 服务器 = TCP:我的服务器\我的实例