Entendemos ao conectar-se ao servidor SQL que especifica:
- <endereço IP>
- <host ou ip>,<número da porta>
Que o cliente ADO ou ODBC normalmente usará tcpip para se conectar.
No entanto, observamos que quando um cliente pede para se conectar a:
< server>\< nome da instância> que parece que o cliente (ODBC neste caso) NÃO usa tcpip.
Acreditamos em alguns casos, conectando-se a:
- <nome do host>
Também pode resultar em uma conexão de pipes nomeados.
Perguntas:
- Como < server>\< instance name> não está se conectando pelo tcpip, isso significa que está usando pipes nomeados, certo?
- Como faço para forçar a conexão a usar tcpip?
E o comportamento (do driver ODBC do Windows de 32 bits para SQL Server) nesse sentido é o mesmo que o comportamento do antigo cliente dblib?
Se você não especificar o protocolo na cadeia de conexão, ele usará o protocolo especificado para o driver do banco de dados. A ordem do protocolo, por padrão, é
Shared Memory
,TCP/IP
e depoisNamed Pipes
. Você também pode definir um protocolo padrão.Para especificar qual protocolo usar em uma string de conexão, adicione
tcp:
antes do nome do servidor. Exemplos: tcp:server1\instance1, tcp:server2, tcp:server3,1433Você pode usar
SQL Server Configuration Manager
para ver a ordem do protocolo ouregedit
para ver o padrão e a ordem do protocolo.O
regkey
éHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0
para aplicativos de 64 bits eHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSSQLServer\Client\SNI11.0
para aplicativos de 32 bits.