Pré-requisitos recomendados e lista de verificação para solucionar problemas de conectividade SQL Server
Aplica-se ao: SQL Server
Número original do KB: 4009936
Pré-requisitos recomendados
Para solucionar problemas de conectividade com eficiência, colete 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 do aplicativo e do sistema de sistemas de SQL Server e cliente. Esses logs podem ajudar a marcar se houver problemas em todo o sistema em seu SQL Server.
Se as conexões estiverem falhando em um aplicativo, colete as cadeias de conexão do aplicativo. Normalmente, essas cadeias de caracteres são encontradas em arquivosWeb.config para aplicativos ASP.NET.
Colete e examine SQL Server logs de erro para outras mensagens de erro e exceções.
Se você tiver acesso do administrador ao computador SQL Server, reúna e examine 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 um administrador para coletar os dados e salvar 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 solução de 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 marcar rapidamente para problemas de conectividade. Examine tópicos individuais para obter etapas detalhadas de solução de problemas.
Opção 1
Se você tiver acesso à saída da ferramenta SQLCHECK mencionada na seção Pré-requisitos recomendados e examinar informações em várias seções no 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. Confira os seguintes exemplos:
Seção no arquivo | Texto a ser pesquisado | 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 drivers. | Vários erros de conectividade |
Informações sobre segurança do cliente e driver | Diffie-Hellman conjuntos de cifras estão habilitados. Possível risco de falhas intermitentes do TLS se a versão do algoritmo for diferente entre clientes e servidores | Se você estiver tendo problemas de conectividade intermitente, confira Aplicativos experimentam erros de conexão TLS fechados à força ao se conectar a SQL Servers no Windows. | Foi forçado o cancelamento de uma conexão existente pelo host remoto |
Informações sobre segurança do cliente e driver | SQL Aliases | Se estiverem presentes, verifique se os aliases estão configurados corretamente e apontando para os endereços IP e servidor corretos. | Ocorreu um erro de rede ou específico à instância ao estabelecer uma conexão com o SQL Server |
SQL Server Informações | 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 browser está iniciado ou tente reiniciar o serviço do navegador. | Ocorreu um erro de rede ou específico à instância ao estabelecer uma conexão com o SQL Server |
SQL Server Informações | Propriedades da conta de serviço de domínio | Se você configurar servidores vinculados do seu SQL Server e o valor Trust for Del estiver definido como false, você poderá encontrar problemas de autenticação com suas consultas de servidor vinculadas. | Solução de problemas de erros de "Falha de logon para usuário" |
SQL Server Informações | O SPN não existe | Verifique esta tabela para ver se os SPNs do seu SQL Server estão configurados corretamente e corrija os problemas identificados. | Não é possível gerar contexto SSPI |
SQL Server Informações | Detalhes de SQL Server Instância | Verifique os valores de portas TCP Habilitadas, TCP e assim por diante. Examine se o TCP/IP está habilitado no lado do servidor e se a instância padrão do SQL está escutando no 1433 ou em uma porta diferente. | Vários erros de conectividade |
Opção 2
Se você não conseguir executar o SQLCHECK em seu computador SQL Server, poderá marcar os seguintes itens antes de fazer uma solução de problemas detalhada:
Verifique se SQL Server foi iniciado e que você verá a seguinte mensagem no log de erros SQL Server:
SQL Server agora está pronto para conexões de cliente. Esta é uma mensagem informativa; nenhuma ação do usuário é necessária.
Use o seguinte comando no PowerShell para marcar o status de serviços de 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 por endereço IP e marcar para obter quaisquer anormalidades:
ping -a <SQL Server machine>, ping -a <SQL Server IP address>
. Se você notar algum problema, trabalhe com o administrador de rede. Como alternativa, você pode usarTest-NetConnection
no PowerShell:$servername = "DestinationServer" Test-NetConnection -ComputerName $servername
Verifique se SQL Server está ouvindo os protocolos apropriados revisando 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" -AllMatches
Verifique se você pode se conectar a SQL Server usando um arquivo UDL. Se funcionar, pode haver um problema com o cadeia de conexão. Para obter instruções sobre o procedimento de teste da UDL, consulte Testar a conectividade OLE DB para SQL Server usando um arquivo UDL. Como alternativa, você pode usar o script a seguir 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ê é capaz de se conectar a SQL Server de outros sistemas cliente e diferentes logons de usuário. Se você conseguir, o problema poderá 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, marcar se os drivers de rede estão atualizados.
Se você estiver enfrentando falhas de logon, verifique se existe um logon (entidade de servidor) e ele tem
CONNECT SQL
permissões para SQL Server. Além disso, verifique se o banco de dados padrão atribuído ao logon está correto e que a entidade de banco de dados mapeada temCONNECT
permissões para o banco de dados. Para obter mais informações sobre como concederCONNECT
permissões à entidade de banco de dados, confira Permissões de Banco de Dados GRANT. Para obter mais informações sobre como concederCONNECT SQL
permissões à entidade de servidor, confira Permissões do GRANT Server. Use o script a seguir 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 Determinar se estou conectado a SQL Server usando a Autenticação Kerberos para determinar se Kerberos está configurado corretamente em seus SQL Servers.
Problemas comuns de conectividade
Ao examinar os pré-requisitos e a lista de verificação, confira problemas comuns de conectividade e selecione a mensagem de erro correspondente para obter etapas detalhadas de solução de problemas.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de