Problemas de autenticación intermitentes o periódicos en SQL Server
Nota:
Antes de empezar a solucionar problemas, se recomienda comprobar los requisitos previos y seguir la lista de comprobación. Para obtener más información, consulte Artículos de autoayuda.
En este artículo se describen las causas comunes de problemas de autenticación intermitentes en la conectividad de SQL Server y se proporcionan soluciones.
Síntomas
Los problemas de autenticación intermitentes o periódicos en la conectividad de SQL Server se producen cuando los usuarios o las aplicaciones se enfrentan a dificultades esporádicas de autenticación con la base de datos de SQL Server. Esto provoca interrupciones en el acceso a datos y la funcionalidad de la aplicación.
Los mensajes de error más comunes
-
-
- Error de inicio de sesión para el usuario ''
- Error de inicio de sesión del usuario 'NT AUTHORITY\ANONYMOUS LOGON'
- Error de inicio de sesión del usuario "<UserName>"
- Error de inicio de sesión del usuario "<Dominio>\<NombreDeUsuario>"
- Error de inicio de sesión. El inicio de sesión procede de un dominio que no es de confianza y no se puede usar con autenticación de Windows.
Causa
Los problemas más comunes son causados por el rendimiento de SQL Server o la respuesta lenta del controlador de dominio. Si usa NT LAN Manager (NTLM), el servicio de subsistema de autoridad de seguridad local (LSASS) tiene un cuello de botella y limita el número de conexiones nuevas que se pueden procesar a la vez. Se realiza una copia de seguridad de otras solicitudes y se puede agotar el tiempo de espera. Algunas causas, como antivirus, pueden ser difíciles de probar, pero siguen siendo comunes y deben investigarse incluso sin pruebas difíciles si otras vías de investigación son ineficaces.
Proceso de solución de problemas
Dado que el problema es intermitente, es probable que la configuración, como los nombres de entidad de seguridad de servicio (SPN) de Kerberos, sea correcto. Para solucionar este problema, pruebe los siguientes pasos de solución de problemas:
Diferencia de latencia entre varios dominios o centros de datos
Si hay varios dominios o centros de datos implicados, compruebe si los usuarios del dominio local o el centro de datos no experimentan el problema mientras los usuarios de otros dominios o centros de datos lo hacen. Si es así, podría indicar una latencia de comunicación entre centros de datos o controladores de dominio. Use los siguientes comandos para investigar el problema:
Para comprobar la latencia de red, use ping. Por ejemplo:
Ejecute el comando:
ping <DatabaseServer>
.Examine la columna de hora y compárelo con ese tiempo en el otro dominio o centro de datos:
Pinging <DatabaseServer> [10.10.10.3] with 32 bytes of data: Reply from 10.10.10.3: bytes=32 time=68ms TTL=116 Reply from 10.10.10.3: bytes=32 time=67ms TTL=116 Reply from 10.10.10.3: bytes=32 time=67ms TTL=116
Para probar los problemas de latencia de validación de credenciales, use Runas con varios usuarios. Por ejemplo:
- Ejecute
runas /user:<DomainName>\<UserAccountName> cmd.exe
. - Escriba la contraseña del usuario después de que aparezca un símbolo del sistema.
- Ejecute
Si el problema persiste incluso después de realizar pruebas con estos comandos, el problema no es con SQL Server, sino con la infraestructura de red o el rendimiento del controlador de dominio.
Buscar un problema de rendimiento en el registro de errores de SQL Server
El registro de errores de SQL Server puede revelar problemas de rendimiento en SQL Server, como entradas que indican que la E/S tarda más de 15 segundos. El equipo de rendimiento de SQL tiene PSSDIAG para ejecutar y analizar. Es posible que tenga que hacerlo si un seguimiento de red revela retrasos en las respuestas de SQL Server.
El registro de errores también puede incluir otros errores relacionados con el dominio, como el siguiente registro de errores que indica algunos problemas de rendimiento de Active Directory:
SSPI handshake failed with error code 0x80090311 while establishing a connection with integrated security; the connection has been closed.
SSPI handshake failed with error code 0x80090304 while establishing a connection with integrated security; the connection has been closed.
Los siguientes códigos de error del sistema operativo indican la causa del error:
-
Error -2146893039 (0x80090311): no se pudo ponerse en contacto con ninguna autoridad para la autenticación.
-
Error -2146893052 (0x80090304): no se puede ponerse en contacto con la autoridad de seguridad local.
Revisión de los registros de eventos en el sistema cliente para ver si hay errores de red
El registro de eventos del sistema tiene varios eventos, como Kerberos, autoridad de seguridad local (LSA) y eventos de Netlogon. Estos eventos indican que el equipo no puede conectarse al controlador de dominio durante algún tiempo. Para que sean más fáciles de encontrar, filtre solo los eventos Error, Advertencia y Crítico . La hora del evento debe estar en torno al momento de la interrupción. Si hay una coincidencia, podría ser un problema de Active Directory.
En algunos casos, este problema puede producirse en SQL Server. Compruebe también los registros de esa máquina.
Source: NETLOGON
Date: <DateTime>
Event ID: 5719
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: SQLPROD01
Description:
This computer was not able to set up a secure session with a domain controller in domain CONTOSO due to the following: The remote procedure call was cancelled. This may lead to authentication problems. Make sure that this computer is connected to the network. If the problem persists, please contact your domain administrator.
En el registro de eventos de seguridad, filtre el identificador de evento 4625. Este evento muestra información detallada sobre el error de inicio de sesión.
Recopilación y revisión del búfer del anillo de conectividad de SQL
El búfer de anillo es un registro histórico de eventos de conexión en SQL Server, lo que significa que se puede tomar después de una interrupción. Muchos eventos incluyen temporizadores de inicio de sesión que indican dónde se dedica el tiempo:
- El tiempo invertido en la red indica una posible latencia de red o cliente.
- El tiempo invertido en las API de capa de sockets seguros (SSL) o interfaz de proveedor de compatibilidad de seguridad (SSPI) indica posibles problemas con el subsistema de seguridad de Windows.
- El tiempo en cola indica un problema de rendimiento de SQL Server.
Para obtener más información, consulte Recopilación del búfer de anillo de conectividad.
Agrupación de conexiones
La falta de agrupación de conexiones puede provocar errores de inicio de sesión intermitentes.
Nota:
La falta de agrupación de conexiones mostrará un gran número de códigos de TIME_WAIT
estado en la NETSTAT
salida en comparación con las conexiones establecidas.
Si la agrupación de conexiones no está habilitada, el cliente puede salir de los puertos salientes y también sobrecargar el servidor. Esta sobrecarga puede hacer que el servidor rechace las solicitudes de conexión entrantes o inunde un controlador de dominio con un rendimiento deficiente.
Lo mejor que debe hacer es que el desarrollador de aplicaciones use la agrupación de conexiones en sus aplicaciones. La agrupación de conexiones está activada de forma predeterminada en aplicaciones de .NET e Internet Information Services (IIS), pero es posible que se haya desactivado por algún motivo.
No se recomienda encarecidamente que las aplicaciones usen código de agrupación personalizado. Casi todas las implementaciones de agrupación personalizadas que hemos encontrado han tenido problemas. Es mejor usar el mecanismo integrado de agrupación de conexiones.
Problemas relacionados con la memoria de kernel baja
La ejecución de puertos efímeros es una causa relativamente común de tiempos de espera de conexión intermitentes.
Problema: memoria de kernel baja en el equipo con SQL Server.
Solución: ajuste la memoria máxima del servidor (MB) en el panel Propiedades de SQL Server Management Studio. Es mejor establecer la memoria máxima del servidor (MB) en aproximadamente 4 GB a 8 GB menos que la memoria física en la máquina. Este valor debe ser menor si hay varias instancias, IIS u otros servidores de aplicaciones que se ejecutan en la máquina. Para obtener recomendaciones sobre la configuración de memoria máxima del servidor (MB), consulte Opciones de configuración de memoria del servidor.
Nota:
El valor predeterminado es 2147483647 MB
, lo que significa que el servidor puede hacer que el sistema operativo (SO) se agote la memoria.