我们理解在连接到 SQL 服务器时指定:
- <ip地址>
- <主机或ip>,<端口号>
ADO 或 ODBC 客户端通常会使用 tcpip 进行连接。
但是,我们观察到,当客户端要求连接时:
<server>\<instance name> 似乎客户端(在本例中为 ODBC)不使用 tcpip。
我们相信在某些情况下,连接到:
- <主机名>
也可能导致命名管道连接。
问题:
- 由于 <server>\<instance name> 没有通过 tcpip 连接,这意味着它使用的是命名管道,对吗?
- 如何强制连接使用 tcpip?
在这方面(SQL Server 的 32 位 Windows ODBC 驱动程序的)行为是否与旧 dblib 客户端的行为相同?
如果您没有在连接字符串中指定协议,那么它将使用为数据库驱动程序指定的协议。默认情况下,协议顺序是
Shared Memory
,TCP/IP
然后是Named Pipes
。您还可以设置默认协议。要指定在连接字符串中使用的协议,请
tcp:
在服务器名称之前添加。示例:tcp:server1\instance1、tcp:server2、tcp:server3,1433您可以使用
SQL Server Configuration Manager
查看协议顺序或regedit
查看默认和协议顺序。regkey
用于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0
64 位应用程序和32HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SNI11.0
位应用程序。