Requisitos previos recomendados y lista de comprobación para solucionar problemas de conectividad SQL Server
Se aplica a: SQL Server
Número KB original: 4009936
Requisitos previos recomendados
Para solucionar problemas de conectividad de forma eficaz, recopile la siguiente información:
Texto del mensaje de error y los códigos de error. Compruebe si el error es intermitente (solo se produce a veces) o coherente (se produce todo el tiempo).
Registros de eventos de la aplicación y del sistema de sistemas SQL Server y cliente. Estos registros pueden ayudar a comprobar si se producen problemas en todo el sistema en la SQL Server.
Si se produce un error en las conexiones desde una aplicación, recopile las cadenas de conexión de la aplicación. Estas cadenas suelen encontrarse en archivos deWeb.config para aplicaciones ASP.NET.
Recopile y revise SQL Server registros de errores para ver otros mensajes de error y excepciones.
Si tiene acceso de administrador al equipo SQL Server, recopile y revise la configuración actual del equipo y las cuentas de servicio mediante el procedimiento siguiente:
Descargue la versión más reciente de SQLCHECK.
Descomprima el archivo descargado en una carpeta, por ejemplo, C:\Temp.
Ejecute el símbolo del sistema como administrador para recopilar los datos y guardarlos en un archivo. Por ejemplo:
SQLCHECK > C:\Temp\server01.SQLCHECK.TXT
.
Nota:
Si está solucionando problemas de conectividad desde un cliente remoto o solucionando problemas de consultas de servidor vinculadas, ejecute la herramienta SQLCHECK en todos los sistemas implicados.
Lista de comprobación rápida para solucionar problemas de conectividad
Nota:
Las secciones siguientes le ayudan a comprobar rápidamente si hay problemas de conectividad. Revise los temas individuales para ver los pasos detallados de solución de problemas.
Opción 1
Si tiene acceso a la salida de la herramienta SQLCHECK mencionada en la sección Requisitos previos recomendados y revisa la información en varias secciones del archivo de salida (Equipo, Client Security y SQL Server), use la información para solucionar los problemas que contribuyen a su problema. Consulte los ejemplos siguientes:
Sección del archivo | Texto que se va a buscar | Posible acción | Puede ayudar a solucionar problemas (ejemplos) |
---|---|---|---|
Información del equipo | Advertencia: El controlador de red puede estar obsoleto | Compruebe en línea si hay nuevos controladores. | Varios errores de conectividad |
Información de controladores y seguridad de cliente | Diffie-Hellman conjuntos de cifrado están habilitados. Posible riesgo de errores tls intermitentes si la versión del algoritmo es diferente entre clientes y servidores | Si tiene problemas de conectividad intermitentes, consulte Experiencia de aplicaciones con errores de conexión TLS cerrados por la fuerza al conectarse a servidores SQL Server en Windows. | Se ha forzado la interrupción de una conexión existente por el host remoto |
Información de controladores y seguridad de cliente | Alias de SQL | Si está presente, asegúrese de que los alias estén configurados correctamente y que apunten al servidor y las direcciones IP correctos. | A network-related or instance-specific error occurred while establishing a connection to SQL Server |
información de SQL Server | Servicios de interés | Si el servicio SQL no se inicia, inícielo. Si tiene problemas para conectarse a una instancia con nombre, asegúrese de que se inicia SQL Server servicio Browser o intente reiniciar el servicio del explorador. | A network-related or instance-specific error occurred while establishing a connection to SQL Server |
información de SQL Server | Propiedades de la cuenta de servicio de dominio | Si configura servidores vinculados desde el SQL Server y el valor De confianza para Del se establece en false, puede encontrarse con problemas de autenticación con las consultas del servidor vinculado. | Solución de problemas de errores de "Error de inicio de sesión para el usuario" |
información de SQL Server | SPN no existe | Compruebe esta tabla para ver si los SPN de los SQL Server están configurados correctamente y corregir los problemas identificados. | Cannot generate SSPI context |
información de SQL Server | Detalles de SQL Server Instancia | Compruebe los valores de TCP Habilitado, Puertos TCP, etc. Revise si TCP/IP está habilitado en el lado servidor y si la instancia predeterminada de SQL está escuchando en 1433 o en otro puerto. | Varios errores de conectividad |
Opción 2
Si no puede ejecutar SQLCHECK en el equipo SQL Server, puede comprobar los siguientes elementos antes de realizar una solución de problemas detallada:
Asegúrese de que se ha iniciado SQL Server y de que ve el siguiente mensaje en el registro de errores de SQL Server:
SQL Server ya está listo para las conexiones de cliente. Se trata de un mensaje informativo; no se requiere ninguna acción del usuario.
Use el siguiente comando en PowerShell para comprobar el estado de SQL Server servicios en el sistema:
Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}
Use el siguiente comando para buscar en el archivo de registro de errores la cadena específica "SQL Server ya está lista para las conexiones de cliente. Este es un mensaje informativo. No se requiere ninguna acción del usuario.":
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."
Compruebe la conectividad básica a través de la dirección IP y compruebe si hay anomalías:
ping -a <SQL Server machine>, ping -a <SQL Server IP address>
. Si observa algún problema, trabaje con el administrador de red. Como alternativa, puede usarTest-NetConnection
en PowerShell:$servername = "DestinationServer" Test-NetConnection -ComputerName $servername
Compruebe si SQL Server escucha en los protocolos adecuados; para ello, revise el registro de errores:
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
Compruebe si puede conectarse a SQL Server mediante un archivo UDL. Si funciona, puede haber un problema con el cadena de conexión. Para obtener instrucciones sobre el procedimiento de prueba de UDL, consulte Prueba de la conectividad OLE DB con SQL Server mediante un archivo UDL. Como alternativa, puede usar el siguiente script para crear e iniciar un archivo UDL-Test.udl (almacenado en la carpeta %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")
Compruebe si puede conectarse a SQL Server desde otros sistemas cliente y diferentes inicios de sesión de usuario. Si puede hacerlo, el problema podría ser específico del cliente o del inicio de sesión que está experimentando el problema. Compruebe los registros de eventos de Windows en el cliente problemático para obtener más punteros. Además, compruebe si los controladores de red están actualizados.
Si experimenta errores de inicio de sesión, asegúrese de que existe un inicio de sesión (entidad de seguridad del servidor) y que tiene
CONNECT SQL
permisos para SQL Server. Además, asegúrese de que la base de datos predeterminada asignada al inicio de sesión es correcta y de que la entidad de seguridad de base de datos asignada tieneCONNECT
permisos para la base de datos. Para obtener más información sobre cómo concederCONNECT
permisos a la entidad de seguridad de base de datos, consulte GRANT Database Permissions. Para obtener más información sobre cómo concederCONNECT SQL
permisos a la entidad de seguridad de servidor, consulte GRANT Server Permissions(CONCEDER permisos de servidor). Use el siguiente script para ayudarle a identificar estos permisos: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 + "'")
Si está solucionando problemas relacionados con Kerberos, puede usar los scripts de Determine If I Am Connected to SQL Server using Kerberos Authentication (Determinar si estoy conectado a SQL Server mediante la autenticación Kerberos) para determinar si Kerberos está configurado correctamente en los servidores SQL Server.
Problemas comunes de conectividad
Cuando haya pasado por los requisitos previos y la lista de comprobación, consulte problemas de conectividad comunes y seleccione el mensaje de error correspondiente para ver los pasos detallados de solución de problemas.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de