Compartilhar via


Recolher dados para resolver problemas de conectividade do SQL Server

Este artigo ajuda-o a identificar a causa principal dos problemas de conectividade do SQL Server ao fazer perguntas relevantes com base em categorias específicas. Embora o artigo Pré-requisitos recomendados e lista de verificação para resolver problemas de conectividade do SQL Server inclua os itens mais importantes a recolher, as perguntas neste artigo podem ajudá-lo a reduzir a causa dos problemas de conectividade e a resolvê-los de forma eficaz.

Observação

Nem todas as perguntas são aplicáveis a todos os problemas. No entanto, estas perguntas podem orientá-lo à medida que considera como resolver problemas de conectividade.

Ao utilizar as informações fornecidas neste artigo, assim que conseguir determinar a natureza exata do problema, veja Descrição geral de problemas de autenticação consistentes no SQL Server para obter o tipo de erros.

Método de recolha de dados

Para recolher dados, pode utilizar ferramentas como o Gravador de Passos do Problema (PSR),Rastreio de rede e rastreio NETLOGON . Esta secção fornece passos detalhados para instalar e configurar uma combinação de todas estas ferramentas.

Siga estes passos em simultâneo nos computadores cliente e servidor. Se a aplicação for uma arquitetura de três camadas ou de n camadas, execute também a instalação em servidores intermédios.

  1. Instale o WireShark em NETSH todos os computadores afetados ou utilize o comando incorporado (Windows 2008 ou versões posteriores). Não é necessário reiniciar.

  2. Ative o registo de depuração NETLOGON no cliente e em todos os servidores ao executar o seguinte comando:

    NLTEST /DBFLAG:2080FFFF

  3. Se possível, siga um dos seguintes passos:

    • Reinicie o computador cliente.
    • Peça ao utilizador para terminar sessão e iniciar sessão novamente.
    • Feche e reabra a aplicação cliente.
  4. No computador cliente, inicie o Gravador de Passos do Problema (psr.exe) e, em seguida, selecione Iniciar Gravação.

    Esta ferramenta captura com precisão todas as ações de utilizador que precedem o problema e guarda os resultados num ficheiro .zip.

  5. Inicie a captura de rede em todos os computadores.

  6. Se estiver a utilizar NETSH, execute o NETSH TRACE START CAPTURE=YES TRACEFILE=C:\TEMP%computername%.ETL comando (utilize um nome de ficheiro ou caminho adequado).

  7. Remova a cache do Sistema de Nomes de Domínio (DNS) em todos os computadores ao executar o IPCONFIG /FLUSHDNS comando .

  8. Limpe a cache NETBIOS em todos os computadores ao executar o NBTSTAT /RR comando .

  9. Remova as permissões Kerberos do cliente ao executar o KLIST purge comando .

  10. Limpe as permissões em cada servidor ao executar o KLIST -li 0x3e7 purge comando .

    Observação

    Escreva o comando . Não copie e cole na linha de comandos porque o hífen pode ser convertido num traço longo (em). KLIST é sensível a maiúsculas e minúsculas.

  11. Reproduza o problema.

  12. Pare a gravação dopsr.exe .

  13. Pare as capturas de rede. Guarde o ficheiro gravado ao executar o comando NETSH: NETSH TRACE STOP com um nome significativo. Por exemplo, o nome do ficheiro pode ser SQLProd01.netmon.cap.

  14. Aguarde até que a linha de comandos volte a aparecer e, em seguida, feche a janela. Não feche a janela da Linha de Comandos antes de aparecer a linha de comandos.

  15. Copie o registo NETLOGON para C:\windows\debug\netlogon.log e atribua um nome significativo ao ficheiro. Por exemplo, SQLProd01.netlogon.log.

  16. Desative o registo ao executar o NLTEST /DBFLAG:0x0 comando .

Recolher dados para categorizar os problemas

O seguinte conjunto de perguntas foi concebido para ajudá-lo a encontrar a categoria na qual um problema cai, orientando-o para a direção certa da resolução de problemas. Selecione cada lista pendente para perguntas relacionadas.

Antes de avançar para as perguntas específicas, certifique-se de que todos os pré-requisitos necessários para as ligações do SQL Server foram cumpridos. Para obter mais informações sobre os pré-requisitos, veja Pré-requisitos recomendados e lista de verificação para resolver problemas de conectividade do SQL Server.

Perguntas de perspetiva mais amplas
  • O problema afeta apenas as ligações da base de dados ou também afeta as ligações web e de partilha de ficheiros? Muitos casos são comunicados à equipa do SQL Server porque ocorrem no servidor da base de dados. No entanto, pode ser possível que o problema não esteja relacionado com a base de dados e possa necessitar de suporte mais geral do Windows ou do Active Directory.
  • Existe uma relação de confiança entre o domínio do utilizador, o domínio do cliente ou o domínio do servidor se forem diferentes? É externo, floresta, unidirecional, bidirecional ou nenhum?
  • A ligaçã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 do que um utilizador estiver a utilizar a aplicação? Ocorre com mais frequência se mais utilizadores estiverem a utilizá-lo?
  • O problema ocorre apenas em determinadas horas do dia ou em determinados dias da semana?
  • O problema ocorre apenas quando está a ser feita uma cópia de segurança ou a base de dados está a ser reindexada?
  • O problema afeta mais do que um servidor?
  • O problema afeta apenas um nó num cluster de n nós? Se sim, poderá 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 utiliza um início de sessão do SQL Server e um TCP/IP?
  • Existe um caso de trabalho que pode ser comparado com o caso com falha? Como diferem os sistemas?
Computador cliente

Utilize as seguintes perguntas para recolher dados sobre os diferentes componentes do computador cliente. Estes dados podem ser úteis para identificar os problemas.

  • Qual é o nome, edição e versão do sistema operativo (WinVer)?

  • Qual é o nome e a versão do controlador ou fornecedor do SQL Server?

  • Qual é o nome do computador e o endereço IP?

  • Qual é o estado do domínio do computador? Se estiver associado a um domínio, qual é o nome de domínio?

  • Que ambiente de tempo de execução da aplicação é utilizado? Por exemplo, Serviços de Informação Internet (IIS), Formulários do Windows, Web Sphere ou Tarefa do SQL Server Integration Services (SSIS).

  • Que idioma da aplicação é utilizado?

  • Qual é a cadeia de ligação utilizada?

  • Que tipo de autenticação é utilizada para ligar ao servidor? Por exemplo, New Technology LAN Manager (NTLM), Kerberos, SQL ou Azure Active Directory (AAD).

  • Se a aplicação for um servidor ou serviço, delega credenciais de utilizador à base de dados de back-end?

  • A delegação restrita é utilizada?

  • O que são a conta e o domínio do serviço de aplicação?

  • Que tipo de serviço é utilizado? É físico, virtual ou cloud? Por exemplo, IaaS, Aplicação Web, Função da Web ou Power BI.

  • O que é o controlador de cliente? É Java Database Connectivity (JDBC) ou é executado no Linux ou Mac?

    Observação

    Os fluxos de trabalho são atualmente mais orientados para o Windows.

  • O problema afeta apenas os fornecedores legados, como Provider=SQLOLEBD ou Driver={SQL Server}, e não o SQL Native Client e os controladores posteriores (ou vice-versa)?

  • O problema ocorre apenas numa aplicação ou em várias aplicações?

  • Um ficheiro de Ligação de Dados Universal (UDL) falha quando tenta ligar-se a outros servidores baseados no SQL Server ou falha apenas no servidor que tem o problema?

  • O utilizador inicia sessão no servidor baseado no SQL Server e tenta ligar-se com o SQL Server Management Studio (SSMS)?

  • O problema ocorre apenas quando utiliza o nome NETBIOS do servidor e não quando utiliza o Nome de Domínio Completamente Qualificado (FQDN) (ou vice-versa)? Funciona com o endereço IP?

  • O cliente com o Windows 10 Enterprise Edition tem a funcionalidade Credential Guard ativada? Se sim, isto poderá afetar os cenários de delegação completa.

Informações de registo

Utilize as seguintes perguntas para recolher dados sobre os ficheiros de registo:

  • Qual é a mensagem de erro exata na pilha de chamadas?
  • O registo foi recolhido dos ficheiros ERRORLOG e ERRORLOG.1 do SQL Server?
  • Os registos de eventos da aplicação foram recolhidos do cliente e do servidor?
  • Os ficheiros de registo da aplicação cliente e os ficheiros de configuração foram recolhidos? Por exemplo, web.config, rsreportserver.config, *.configou *.ini.
  • Existe uma representação visual disponível da rede que mostre os computadores, routers e assim sucessivamente?
Problemas novos ou existentes

Refere-se a determinar se o problema é um desenvolvimento recente ou se persiste durante algum tempo:

  • O problema sempre existiu (nova instalação) ou a aplicação funcionou corretamente durante algum tempo antes de ter sido recentemente danificada?
  • Se a aplicação funcionar corretamente, que alterações foram efetuadas ao ambiente? Por exemplo, atualizações instaladas, controladores de domínio atualizados, alterações nas definições da firewall, controladores de domínio desativados ou uma mudança para uma UO diferente no domínio.
Computador de servidor

Para um Servidor Ligado, recolha informações do servidor para o servidor de camada média e para o servidor de back-end. Para um problema de delegação de IIS para SQL, recolha informações no servidor Web, incluindo as definições de autenticação eweb.config .

  • Qual é o nome do sistema operativo, edição e versão (Winver)?
  • Qual é o nome e a versão da base de dados?
  • Qual é o nome do computador?
  • Qual é o endereço IP?
  • Qual é o nome de domínio se o computador estiver associado a um domínio?
  • O que é a conta de serviço e o domínio do SQL Server?
  • Qual é o nome da instância do SQL Server?
  • Que protocolos estão ativados?
  • Qual é a porta em que o servidor escuta?
  • Qual é o nome do pipe do servidor? Pode encontrar estas informações no registo de erros.
  • Que tipo de ambiente é utilizado? É físico, virtual ou cloud? Por exemplo, IaaS (SQL numa Máquina Virtual (VM) do Azure) ou PaaS (Base de Dados SQL do Azure, SQL Managed Instance (MI)).
  • A base de dados está implementada como autónoma, agrupada, espelhada ou a utilizar o AlwaysOn?
  • Qual é o nome do parceiro de Ativação pós-falha e o endereço IP?
  • Qual é o nome do cluster virtual ou o nome e a porta do Serviço de Escuta?
  • Qual é o IP Virtual ou o IP do Serviço de Escuta?
  • Em que sistema operativo está instalada a base de dados? É Windows, Linux ou Mac? Isto pode afetar a recolha de dados.
  • Qual é a localização da base de dados? Está no Azure?
  • Qual é o estado atual do servidor em termos do Service Pack e da Atualização Cumulativa mais recentes? Não vale a pena depurar um problema que já tenha sido corrigido.
  • O SQL Server foi atualizado recentemente para suportar o Transport Layer Security (TLS) 1.2? Os clientes também foram atualizados? O TLS 1.0 foi desativado?
  • Qual é o estado atual do serviço do SQL Server? Está em execução?
  • Qual é o estado do serviço SQL Browser? Está em execução?
  • Qual é a especificidade do problema para uma conta de serviço? A execução do servidor com uma conta de serviço diferente resolve o problema?
Informações do utilizador

Recolha os seguintes detalhes do utilizador:

  • O utilizador inicia sessão diretamente no computador cliente ou acede-lhe remotamente? Por exemplo, o utilizador utiliza um browser?
  • O utilizador é um serviço, como o SQL Agent? A identidade do processo está a ser utilizada ou está a ser utilizada uma credencial armazenada?
  • Qual é o tipo de autenticação utilizado para ligar à aplicação cliente? É o Windows, a autenticação de Formulários ou o AAD?
  • O utilizador liga-se ao servidor através da segurança integrada?
  • Qual é o nome de utilizador e o nome de domínio?

Se o utilizador for remoto para a aplicação cliente, recolha os seguintes detalhes:

  • Qual é o nome do computador e o endereço IP?
  • O computador está associado a um domínio? Se sim, qual é o nome de domínio?
  • O utilizador está a ligar-se através de uma VPN ou de um servidor proxy? O problema ocorre se um dos métodos estiver diretamente ligado?
  • Se o utilizador estiver a ligar a um servidor Web, a carga do servidor será balanceada?
  • Estão a ser utilizadas sessões autocolantes ou afinidade de sessão?
  • O utilizador está a iniciar sessão num servidor terminal ou a aceder à aplicação?
  • O problema afeta apenas os utilizadores em unidades organizacionais (UOs) específicas?
  • O utilizador, cliente ou servidor foi movido para uma unidade organizacional (UO) diferente no Active Directory?
  • O problema afeta apenas os utilizadores não administrativos?
  • O problema afeta todos ou apenas alguns dos utilizadores num determinado domínio?

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.