Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Número original do KB: 4009936
Resumo
Este artigo fornece um ponto de partida de duas partes para solucionar problemas de conectividade SQL Server: um conjunto de pré-requisitos recomendados para coletar dados de diagnóstico e uma lista de verificação rápida que você pode usar antes de começar a análise detalhada. Use-o para coletar mensagens de erro, logs de eventos, cadeias de conexão e detalhes de configuração SQL Server e verificar se os serviços, ouvintes, protocolos, permissões e caminhos de rede estão íntegros. Depois de concluir essas etapas, continue com problemas comuns de conectividade para selecionar a mensagem de erro que corresponde ao seu cenário para etapas detalhadas de solução de problemas.
Pré-requisitos recomendados
Para solucionar problemas de conectividade com eficiência, reúna as seguintes informações:
O texto da mensagem de erro e os códigos de erro. Verifique se o erro é intermitente (ocorre apenas às vezes) ou consistente (ocorre o tempo todo).
Logs de eventos de aplicativos e de sistemas, incluindo o SQL Server e sistemas cliente. Esses logs podem ajudá-lo a verificar se há problemas em todo o sistema em seu SQL Server.
Se as conexões falharem em um aplicativo, colete as cadeias de conexão do aplicativo. Essas cadeias de caracteres normalmente são encontradas em arquivos Web.config para aplicativos ASP.NET.
Colete e examine os logs de erros do SQL Server em busca de outras mensagens de erro e exceções.
Se você tiver acesso de administrador ao computador do SQL Server, reúna e revise as configurações atuais do computador e as contas de serviço usando o seguinte procedimento:
Baixe a versão mais recente do SQLCHECK.
Descompacte o arquivo baixado em uma pasta, por exemplo, C:\Temp.
Execute o prompt de comando como administrador para coletar os dados e salvá-los em um arquivo. Por exemplo:
SQLCHECK > C:\Temp\server01.SQLCHECK.TXT.
Observação
Se você estiver solucionando problemas de conectividade de um cliente remoto ou solucionando problemas de consultas de servidor vinculado, execute a ferramenta SQLCHECK em todos os sistemas envolvidos.
Lista de verificação rápida para solucionar problemas de conectividade
Observação
As seções a seguir ajudam você a verificar rapidamente se há problemas de conectividade. Para obter etapas detalhadas de solução de problemas, examine tópicos individuais.
Examinar a saída da ferramenta SQLCHECK
Se você tiver acesso à saída da ferramenta SQLCHECK mencionada na seção Pré-requisitos recomendados, examine as informações em várias seções do arquivo de saída (Computador, Segurança do Cliente e SQL Server). Use as informações para resolver os problemas que contribuem para o problema. Veja os exemplos a seguir:
| Seção no arquivo | Texto para pesquisa | Ação potencial | Pode ajudar a solucionar problemas (exemplos) |
|---|---|---|---|
| Informações do computador | Aviso: O driver de rede pode estar desatualizado | Verifique online se há novos motoristas. | Vários erros de conectividade |
| Segurança do Cliente e Informações do Motorista | Os conjuntos de cifras Diffie-Hellman estão habilitados. Possível risco de falhas intermitentes de TLS se a versão do algoritmo for diferente entre clientes e servidores | Se você estiver tendo problemas de conectividade intermitente, consulte Os aplicativos experimentarão erros de conexão TLS fechados à força ao se conectarem a SQL Servers em Windows. | Foi forçado o cancelamento de uma conexão existente pelo host remoto |
| Segurança do Cliente e Informações do Motorista | SQL Aliases | Se estiver presente, verifique se os aliases estão configurados corretamente e aponte para o servidor e endereços IP corretos. | Ocorreu um erro de rede ou específico à instância ao estabelecer uma conexão com o SQL Server |
| Informações do SQL Server | Serviços de Interesse | Se o serviço SQL não for iniciado, inicie-o. Se você estiver tendo problemas para se conectar a uma instância nomeada, verifique se SQL Server serviço Navegador foi iniciado ou tente reiniciar o serviço de navegador. | Ocorreu um erro de rede ou específico à instância ao estabelecer uma conexão com o SQL Server |
| Informações do SQL Server | Propriedades da conta de serviço de domínio | Se você configurar servidores vinculados de seu SQL Server e o valor de Confiança para Del for definido como false, você poderá encontrar problemas de autenticação com suas consultas de servidor vinculadas. | Solução de problemas de erros "Falha no login do usuário" |
| Informações do SQL Server | O SPN não existe | Verifique esta tabela para ver se os SPNs do SQL Server estão configurados corretamente e corrigir os problemas identificados. | Não é possível gerar contexto SSPI |
| Informações do SQL Server | Detalhes da instância do SQL Server | Verifique os valores de TCP habilitado, Portas TCP e assim por diante. Revise se o TCP/IP está habilitado no lado do servidor e se a instância padrão do SQL está escutando em 1433 ou em uma porta diferente. | Vários erros de conectividade |
Executar verificações manuais quando o SQLCHECK não estiver disponível
Se você não puder executar o SQLCHECK em seu computador SQL Server, verifique os seguintes itens antes de fazer uma solução de problemas detalhada:
Verifique se o SQL Server foi iniciado e se você vê a seguinte mensagem no log de erros do SQL Server:
O SQL Server já está pronto para conexões de clientes. Esta mensagem é apenas para informação. Não é necessária uma ação do usuário.
Use o seguinte comando no PowerShell para verificar o status dos serviços do SQL Server no sistema:
Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}Use o comando a seguir para pesquisar o arquivo de log de erros para a cadeia de caracteres específica "SQL Server agora está pronto para conexões de cliente. Esta é uma mensagem informativa; nenhuma ação do usuário é necessária.":
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."Verifique a conectividade básica sobre o endereço IP e verifique se há anormalidades:
ping -a <SQL Server machine>, ping -a <SQL Server IP address>. Se você observar algum problema, trabalhe com o administrador de rede. Como alternativa, você pode usarTest-NetConnectionno PowerShell:$servername = "DestinationServer" Test-NetConnection -ComputerName $servernameVerifique se o SQL Server está escutando os protocolos apropriados examinando o log de erros:
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "Server is listening on" , "ready to accept connection on" -AllMatchesVerifique se você pode se conectar a SQL Server usando um arquivo UDL. Se funcionar, poderá haver um problema com o cadeia de conexão. Para obter instruções sobre o procedimento de teste UDL, consulte Testar a conectividade do OLE DB com o SQL Server usando um arquivo UDL. Como alternativa, você pode usar o seguinte script para criar e iniciar um arquivo UDL-Test.udl (armazenado na pasta %TEMP% ):
clear $ServerName = "(local)" $UDL_String = "[oledb]`r`n; Everything after this line is an OLE DB initstring`r`nProvider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID=`"`";Initial Catalog=`"`";Data Source=" + $ServerName + ";Initial File Name=`"`";Server SPN=`"`";Authentication=`"`";Access Token=`"`"" Set-Content -Path ($env:temp + "\UDL-Test.udl") -Value $UDL_String -Encoding Unicode #open the UDL Invoke-Expression ($env:temp + "\UDL-Test.udl")Verifique se você pode se conectar a SQL Server de outros sistemas cliente e logons de usuário diferentes. Se você puder, o problema pode ser específico para o cliente ou logon que está enfrentando o problema. Verifique os logs de eventos do Windows no cliente problemático para obter mais ponteiros. Além disso, verifique se os drivers de rede estão atualizados.
Se você estiver enfrentando falhas de login, verifique se existe um login (principal do servidor) e se ele tem
CONNECT SQLpermissões para SQL Server. Além disso, verifique se o banco de dados padrão atribuído ao logon está correto e se a entidade de banco de dados mapeada temCONNECTpermissões para o banco de dados. Para obter mais informações sobre como concederCONNECTpermissões à entidade de segurança do banco de dados, consulte GRANT Database Permissions. Para obter mais informações sobre como concederCONNECT SQLpermissões ao principal do servidor, consulte Permissões do Servidor GRANT. Use o seguinte script para ajudá-lo a identificar essas permissões:clear ## replace these variables with the login, user, database and server $server_principal = "CONTOSO\JaneK" $database_principal = "JaneK" $database_name = "mydb" $server_name = "myserver" Write-Host "`n******* Server Principal (login) permissions *******`n`n" sqlcmd -E -S $server_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as login_type, convert(varchar(32), pr.name) as login_name, is_disabled, convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name, convert(varchar(32), default_database_name) as default_db_name FROM sys.server_principals AS pr LEFT OUTER JOIN sys.server_permissions AS pe ON pr.principal_id = pe.grantee_principal_id WHERE is_fixed_role = 0 -- Remove for SQL Server 2008 and name = '" + $server_principal + "'") Write-Host "`n******* Database Principal (user) permissions *******`n`n" sqlcmd -E -S $server_name -d $database_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as user_type, convert(varchar(32),pr.name) as user_name, convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name FROM sys.database_principals AS pr LEFT OUTER JOIN sys.database_permissions AS pe ON pr.principal_id = pe.grantee_principal_id WHERE pr.is_fixed_role = 0 and name = '" + $database_principal + "'") Write-Host "`n******* Server to Database Principal mapping ********`n" sqlcmd -E -S $server_name -d $database_name -Q ("exec sp_helplogins '" + $server_principal + "'")Se você estiver solucionando problemas relacionados ao Kerberos, poderá usar os scripts em Como determinar se o tipo de autenticação é Kerberos.
Problemas comuns de conectividade
Depois de examinar os pré-requisitos e a lista de verificação, consulte problemas comuns de conectividade e selecione a mensagem de erro que corresponde ao seu cenário para etapas detalhadas de solução de problemas.