Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Essa foi uma situação curiosa. Realizamos um teste de stress para validar a carga de um servidor SQL Server e, para nossa surpresa, deparamos com erros “SQL Server Does Not Exist Or Access Denied”. Usando o NETSTAT, observamos que havia um limite de número de portas aberta, chegando até a porta 5000, no máximo.
A questão é por que o limite da porta 5000 e não 5001, 5002, 5003 ou 5004?
Encontramos a explicação ninja! O limite está relacionado com as “portas efêmeras”, que estabelece o intervalo 1025-5000 para conexões TCP/IP. O diagnóstico pode ser feito com o auxílio da ferramenta NETSTAT, como mostra o artigo Avoiding TCP/IP Port Exhaustion.
Felizmente o limite da porta 5000 pode ser aumentado para o máximo de 65534 através de uma chave no registry:
[HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
Parâmetro: MaxUserPort
Tipo: DWORD
Valor: 65534
Esse parâmetro deve ser avaliado nas máquinas clientes (servidores de aplicação), não sendo necessário alterar a configuração no servidor SQL.
Mensagens de erro “SQL Server Does Not Exist Or Access Denied” estão normalmente associados a configuração da aplicação cliente.
Windows Vista
Essa semana acabei de encontrar um problema de conexão a partir de uma estação Windows Vista. Não tem nenhuma relação com as portas efêmeras, mas está relacionado à configuração de firewall. Mais informações estão documentadas no artigo KB944390.
Referência
Avoiding TCP/IP Port Exhaustion
https://msdn.microsoft.com/en-us/library/aa560610(BTS.20).aspxYou cannot access a SQL Server database by using the OLE DB provider for SQL Server when your application is in a high-stress scenario
https://support.microsoft.com/kb/907264
Description of TCP/IP settings that you may have to adjust when SQL Server connection pooling is disabled
https://support.microsoft.com/kb/328476
FIX: Error message when you connect to a named instance of SQL Server on a client computer that is running Windows Vista or Windows Server 2008: "Specified SQL server not found" or "Error Locating Server/Instance Specified"
https://support.microsoft.com/kb/944390