ODBC 和 ADO 连接:连接到时使用什么协议\?

ODBC 和 ADO 连接:连接到时使用什么协议\?

我们了解,当连接到 SQL 服务器时,指定:

  • < 主机名>
  • < IP 地址>
  • <主机或 IP>,<端口号>

ADO 或 ODBC 客户端通常使用 tcpip 进行连接。

然而,我们观察到,当客户端请求连接到:

< 服务器>\< 实例名称> 似乎客户端(本例中为 ODBC)不使用 tcpip。

  • 它有什么用途?
  • 我可以强制使用 tcpip 吗?

并且在这方面的行为(SQL Server 的 32 位 Windows ODBC 驱动程序)是否与旧的 dblib 客户端的行为相同?

答案1

在连接字符串中指定servername\instance名称服务器时,它将尝试通过 SQL 浏览器(位于 UDP 端口 1434 上)进行端口解析。如果响应成功,它应该包含端口号或命名管道端点,并且连接(如果启用了 TCP/IP 或命名管道)应该成功。

这取决于:

  1. 启用了哪些客户端协议
  2. 启用了哪些服务器协议
  3. SQL Browser 服务是否正在运行
  4. 连接字符串中未指定协议
  5. 防火墙规则
  6. 客户端连接库

我可以强制使用 tcpip 吗?

当然可以!为了强制使用协议,请将其添加到连接字符串中服务器名称的开头。例如,如果您想强制使用MyServer\MyInstance端口 5400 上的 TCPIP,则可以使用:

  • 服务器 =TCP:MyServer,5400
  • 服务器 = TCP:我的服务器\我的实例

相关内容