Coletar dados para solucionar problemas de conectividade do SQL Server
Este artigo ajuda você a identificar a causa raiz dos problemas de conectividade do SQL Server fazendo perguntas relevantes com base em categorias específicas. Embora o artigo Pré-requisitos recomendados e lista de verificação para solucionar problemas de conectividade do SQL Server inclua os itens mais importantes a serem coletados, as perguntas neste artigo podem ajudá-lo a restringir a causa dos problemas de conectividade e solucioná-los com eficiência.
Observação
Nem todas as perguntas são aplicáveis a todas as questões. No entanto, essas perguntas podem orientá-lo enquanto você considera como solucionar problemas de conectividade.
Usando as informações fornecidas neste artigo, depois que você conseguir se concentrar na natureza exata do problema, consulte Visão geral de problemas de autenticação consistentes no SQL Server para obter o tipo de erros.
Método de coleta de dados
Para coletar dados, você pode usar ferramentas como PSR (Gravador de Etapas de Problemas), Rastreamento de rede e Rastreamento NETLOGON. Esta seção fornece etapas detalhadas para instalar e configurar uma combinação de todas essas ferramentas.
Siga estas etapas simultaneamente nos computadores cliente e servidor. Se o aplicativo for uma arquitetura de 3 ou n camadas, execute a instalação em servidores intermediários também.
Instale o WireShark em todos os computadores afetados ou use o comando integrado
NETSH
(Windows 2008 ou versões posteriores). Nenhuma reinicialização é necessária.Habilite o log de depuração NETLOGON no cliente e em todos os servidores executando o seguinte comando:
NLTEST /DBFLAG:2080FFFF
Se possível, execute uma das seguintes etapas:
- Reinicie o computador cliente.
- Peça ao usuário para fazer logoff e login novamente.
- Feche e reabra o aplicativo cliente.
No computador cliente, inicie o Gravador de Etapas de Problemas (psr.exe) e selecione Iniciar Registro.
Essa ferramenta captura com precisão todas as ações do usuário que precedem o problema e salva os resultados em um arquivo .zip.
Inicie a captura de rede em todos os computadores.
Se você estiver usando NETSH, execute o
NETSH TRACE START CAPTURE=YES TRACEFILE=C:\TEMP%computername%.ETL
comando (use um nome de arquivo ou caminho apropriado).Limpe o cache do DNS (Sistema de Nomes de Domínio) em todos os computadores executando o
IPCONFIG /FLUSHDNS
comando.Limpe o cache NETBIOS em todos os computadores executando o
NBTSTAT /RR
comando.Limpe os tíquetes Kerberos do cliente executando o
KLIST purge
comando.Limpe os tickets em cada servidor executando o
KLIST -li 0x3e7 purge
comando.Observação
Digite o comando . Não copie e cole na linha de comando porque o hífen pode ser convertido em um traço longo (em).
KLIST
diferencia maiúsculas e minúsculas.Reproduza o problema.
Pare o psr.exe gravação.
Pare as capturas de rede. Salve o arquivo gravado executando o comando NETSH:
NETSH TRACE STOP
usando um nome significativo. Por exemplo, o nome do arquivo pode ser SQLProd01.netmon.cap.Aguarde até que o prompt de comando reapareça e feche a janela. Não feche a janela do prompt de comando antes que o prompt apareça.
Copie o log NETLOGON para C:\windows\debug\netlogon.log e dê ao arquivo um nome significativo. Por exemplo, SQLProd01.netlogon.log.
Desative o registro executando o
NLTEST /DBFLAG:0x0
comando.
Colete dados para categorizar os problemas
O conjunto de perguntas a seguir foi criado para ajudá-lo a encontrar a categoria na qual um problema se enquadra, orientando-o na direção certa da solução de problemas. Selecione cada lista suspensa para perguntas relacionadas.
Antes de começar a fazer as perguntas específicas, verifique se todos os pré-requisitos necessários para as conexões do SQL Server foram atendidos. Para obter mais informações sobre os pré-requisitos, consulte Pré-requisitos recomendados e lista de verificação para solucionar problemas de conectividade do SQL Server.
Perguntas de perspectiva mais ampla
- O problema afeta apenas as conexões de banco de dados ou também afeta as conexões da Web e de compartilhamento de arquivos? Muitos casos são relatados à equipe do SQL Server porque ocorrem no servidor de banco de dados. No entanto, pode ser possível que o problema não esteja relacionado ao banco de dados e exija suporte mais geral ao Windows ou ao Active Directory.
- Existe uma relação de confiança entre o domínio do usuário, o domínio do cliente ou o domínio do servidor se eles forem diferentes? É externo, floresta, unidirecional, bidirecional ou nenhum?
- A conexão funciona corretamente se todos os recursos estiverem no mesmo domínio?
- O problema é intermitente ou periódico ou é consistente?
- O problema ocorre apenas se mais de um usuário estiver usando o aplicativo? Isso ocorre com mais frequência se mais usuários o estiverem usando?
- O problema ocorre apenas em determinados horários do dia ou em determinados dias da semana?
- O problema ocorre apenas quando um backup está sendo feito ou o banco de dados está sendo reindexado?
- O problema afeta mais de um servidor?
- O problema afeta apenas um nó em um cluster de n nós? Se sim, pode ser mais eficiente considerar a reconstrução desse nó específico.
- O problema afeta apenas um ou dois clientes de vários? Se sim, talvez a reconstrução seja mais eficiente.
- O problema afeta apenas pipes nomeados e não TCP (ou vice-versa)?
- O problema ocorre quando você usa um logon do SQL Server e TCP/IP?
- Existe um caso de trabalho que pode ser comparado com o caso de falha? Como os sistemas diferem?
Computador cliente
Use as perguntas a seguir para coletar dados sobre os diferentes componentes do computador cliente. Esses dados podem ser úteis para identificar os problemas.
Qual é o nome, a edição e a versão do sistema operacional (WinVer)?
Qual é o nome e a versão do driver ou provedor do SQL Server?
Qual é o nome do computador e o endereço IP?
Qual é o status do domínio do computador? Se ele estiver associado a um domínio, qual é o nome de domínio?
Qual ambiente de tempo de execução do aplicativo é usado? Por exemplo, Internet Information Services (IIS), Windows Forms, Web Sphere ou SQL Server Integration Services (SSIS) Job.
Qual idioma de aplicativo é usado?
Qual é a cadeia de conexão usada?
Que tipo de autenticação é usada para se conectar ao servidor? Por exemplo, NTLM (New Technology LAN Manager), Kerberos, SQL ou AAD (Azure Active Directory).
Se o aplicativo for um servidor ou serviço, ele delegará credenciais de usuário ao banco de dados back-end?
A delegação restrita é usada?
O que são a conta e o domínio do serviço de aplicativo?
Que tipo de serviço é usado? É físico, virtual ou na nuvem? Por exemplo, IaaS, Aplicativo Web, Função Web ou Power BI.
O que é o driver do cliente? É Java Database Connectivity (JDBC) ou roda em Linux ou Mac?
Observação
Atualmente, os fluxos de trabalho são mais orientados para o Windows.
O problema afeta apenas provedores herdados, como
Provider=SQLOLEBD
ouDriver={SQL Server}
, e não SQL Native Client e drivers posteriores (ou vice-versa)?O problema ocorre em apenas um aplicativo ou em vários aplicativos?
Um arquivo UDL (Universal Data Link) falha quando tenta se conectar a outros servidores baseados no SQL Server ou falha apenas no servidor que tem o problema?
O usuário faz logon no servidor baseado no SQL Server e tenta se conectar usando o SSMS (SQL Server Management Studio)?
O problema ocorre somente quando você usa o nome NETBIOS do servidor e não quando você usa o FQDN (Nome de Domínio Totalmente Qualificado) (ou vice-versa)? Funciona usando o endereço IP?
O cliente que executa o Windows 10 Enterprise Edition tem o recurso Credential Guard ativado? Em caso afirmativo, isso pode afetar cenários de delegação completa.
Informações de registro
Use as seguintes perguntas para coletar dados sobre os arquivos de log:
- Qual é a mensagem de erro exata na pilha de chamadas?
- O log foi coletado dos arquivos ERRORLOG e ERRORLOG.1 do SQL Server?
- Os logs de eventos do aplicativo foram coletados do cliente e do servidor?
- Os arquivos de log e os arquivos de configuração do aplicativo cliente foram coletados? Por exemplo, web.config, rsreportserver.config, *.config ou *.ini.
- Existe uma representação visual disponível da rede que mostra os computadores, roteadores e assim por diante?
Problemas novos ou existentes
Refere-se a determinar se o problema é um desenvolvimento recente ou se persistiu por um tempo:
- O problema sempre existiu (nova instalação) ou o aplicativo funcionou corretamente por algum tempo antes de quebrar recentemente?
- Se o aplicativo funcionava corretamente, quais alterações foram feitas no ambiente? Por exemplo, atualizações instaladas, controladores de domínio atualizados, alterações nas configurações de firewall, controladores de domínio desativados ou uma mudança para uma UO diferente no domínio.
Computador servidor
Para um Servidor Vinculado, colete informações do servidor para o servidor de camada intermediária e o servidor back-end. Para um problema de delegação do IIS para SQL, colete informações sobre o servidor Web, incluindo o web.config e as configurações de autenticação.
- Qual é o nome do nome do sistema operacional, edição e versão (Winver)?
- Qual é o nome e a versão do banco de dados?
- Qual é o nome do computador?
- Qual é o endereço IP?
- Qual é o nome de domínio se o computador estiver ingressado no domínio?
- O que é a conta e o domínio de serviço do SQL Server?
- Qual é o nome da instância do SQL Server?
- Quais protocolos estão ativados?
- Qual é a porta em que o servidor escuta?
- Qual é o nome do pipe do servidor? Você pode encontrar essas informações no log de erros.
- Que tipo de ambiente é usado? É físico, virtual ou na nuvem? Por exemplo, IaaS (SQL em uma VM (Máquina Virtual) do Azure) ou PaaS (Banco de Dados SQL do Azure, MI (Instância Gerenciada de SQL)).
- O banco de dados é implantado como autônomo, clusterizado, espelhado ou usando Always On?
- Qual é o nome e o endereço IP do parceiro de failover?
- Qual é o nome do cluster virtual ou o nome e a porta do ouvinte?
- Qual é o IP virtual ou IP do ouvinte?
- Em qual sistema operacional o banco de dados está instalado? É Windows, Linux ou Mac? Isso pode afetar a coleta de dados.
- Qual é a localização do banco de dados? Está no Azure?
- Qual é o status atual do servidor em termos do Service Pack e Atualização Cumulativa mais recentes? Não faz sentido depurar um problema que já foi corrigido.
- O SQL Server foi atualizado recentemente para dar suporte ao TLS (Transport Layer Security) 1.2? Os clientes também foram atualizados? O TLS 1.0 foi desativado?
- Qual é o status atual do serviço SQL Server? Está funcionando?
- Qual é o status do serviço SQL Browser? Está funcionando?
- Qual é a especificidade do problema para uma conta de serviço? A execução do servidor usando uma conta de serviço diferente resolve o problema?
Informações do usuário
Colete os seguintes detalhes do usuário:
- O usuário efetua login diretamente no computador cliente ou o acessa remotamente? Por exemplo, o usuário usa um navegador?
- O usuário é um serviço, como o SQL Agent? A identidade do processo está sendo usada ou uma credencial armazenada está sendo usada?
- Qual é o tipo de autenticação usada para se conectar ao aplicativo cliente? É Windows, autenticação de formulários ou AAD?
- O usuário se conecta ao servidor usando segurança integrada?
- Quais são o nome de usuário e o nome de domínio?
Se o usuário estiver remoto para o aplicativo cliente, colete os seguintes detalhes:
- Qual é o nome do computador e o endereço IP?
- O computador está ingressado no domínio? Em caso afirmativo, qual é o nome de domínio?
- O usuário está se conectando por meio de uma VPN ou de um servidor proxy? O problema ocorre se um dos métodos estiver diretamente conectado?
- Se o usuário estiver se conectando a um servidor Web, a carga do servidor será balanceada?
- As sessões fixas ou a afinidade de sessão estão sendo usadas?
- O usuário está fazendo login em um servidor de terminal ou jumpbox e acessando o aplicativo?
- O problema afeta apenas os usuários em determinadas unidades organizacionais (UOs)?
- O usuário, cliente ou servidor foi movido para uma unidade organizacional (UO) diferente no Active Directory?
- O problema afeta apenas usuários não administrativos?
- O problema afeta todos ou apenas alguns dos usuários em um domínio específico?
Confira também
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.