Ao se conectar a um SQL Server 2008 R2 a partir de um aplicativo cliente .NET 4 em um servidor diferente na mesma LAN, é possível definir três protocolos de rede diferentes:
- TCP
- Pipes nomeados
- Não defina nada na string de conexão e use o padrão
Qual é a melhor prática? O que escolher?
Informações adicionais: TCP e pipes nomeados são ativados no servidor e no cliente. O aplicativo está usando espelhamento de banco de dados. Cliente e servidor se comunicam em uma LAN rápida.
Estamos investigando isso porque temos problemas raros e espúrios de conectividade e tempo limite. (Mas, independentemente disso, gostaria de saber a melhor prática).
Existe um artigo sobre este assunto no MSDN , mas é muito genérico e vago. Não aconselha ou recomenda nada de útil.
Prefiro TCP/IP em vez de pipes nomeados, embora na maioria das situações não haja diferença perceptível. Você pode fazer isso ajustando os protocolos suportados pela instância no SQL Server Configuration Manager em vez de codificar coisas em sua cadeia de conexão (isso facilita fazer alterações ou solucionar problemas).
Essencialmente, o roteamento e outras sobrecargas envolvidas com pipes nomeados (a menos que seus aplicativos estejam na mesma máquina que o SQL Server, caso em que há apenas uma pequena sobrecarga extra) tornam a opção menos eficiente, especialmente em escala, em um ambiente de rede mais lento (100 MB ou menos) ou se suas cargas de trabalho vierem em rajadas.
Se seus aplicativos estiverem na mesma caixa que o SQL Server, você também deve manter a memória compartilhada em mente - se você tiver aplicativos na caixa do SQL Server se comunicando diretamente com o SQL Server, essa será a opção mais eficiente.
Você pode ler sobre as vantagens de desempenho do TCP/IP com mais detalhes .
O protocolo Named Pipes é útil para o aplicativo projetado em torno de NetBIOS ou outros protocolos baseados em LAN.
Os pipes nomeados fornecem acesso fácil a chamadas de procedimento remoto (RPC) em um único domínio de segurança e, portanto, são vantajosos para esses aplicativos.
Normalmente o protocolo TCP é bom na prática porque você não precisa se preocupar com tudo isso na rede.