Centro de ayuda, Configuración y activación de Windows Server

Guía paso a paso para solucionar el error 18456 de SQL Server: «Error de inicio de sesión del usuario»

Solucionar el error 18456 de SQL Server: «Error de inicio de sesión del usuario»

Si estás mirando fijamente la pantalla intentando solucionar el error 18456 de SQL Server («Error de inicio de sesión del usuario»), respira hondo, porque seguro que no eres el único en esta situación tan frustrante. Como desarrollador front-end y técnico sénior de TI de Microsoft, he visto cómo este mismo fallo de conexión ha bloqueado innumerables versiones de aplicaciones, ha paralizado entornos de pruebas internos y ha echado por tierra muchos días de desarrollo. Este error significa, básicamente, que el motor de seguridad de SQL Server ha rechazado tu intento de conexión, pero oculta intencionadamente el motivo concreto tras un mensaje genérico por motivos de seguridad. A lo largo de esta guía completa, vamos a ir más allá de los síntomas superficiales, analizaremos tanto la configuración front-end como los ajustes de seguridad de la base de datos back-end, y aplicaremos soluciones técnicas concretas para que tus aplicaciones vuelvan a comunicarse con tu base de datos.

Entender la causa principal del error 18456 de SQL Server

Antes de empezar a ejecutar comandos o modificar configuraciones, tenemos que entender por qué SQL Server muestra este error concreto. Cuando se rechaza una conexión, el registro de errores de SQL Server Management Studio (SSMS) suele registrar un número de estado junto con el código de error. Por ejemplo, el estado 1 suele indicar un nombre de usuario desconocido, el estado 8 significa que la contraseña no coincide y el estado 65 indica un problema con el modo de autenticación. Para investigar a fondo estos códigos de estado, siempre puedes consultar la guía oficial en Microsoft Learn para realizar diagnósticos técnicos en profundidad. A los desarrolladores front-end les suele pasar esto cuando suben actualizaciones de código a un servidor de producción que tiene políticas de seguridad más estrictas que un equipo de desarrollo local en el que se ejecuta SQL Server Express.

Activar el modo de autenticación de SQL Server

Por defecto, muchas instalaciones nuevas de SQL Server funcionan exclusivamente en modo de autenticación de Windows. Si tu cadena de conexión utiliza un nombre de usuario y una contraseña específicos de SQL, el servidor la rechazará inmediatamente con el error 18456. Para solucionarlo, tenemos que habilitar la autenticación en modo mixto, que admite tanto las credenciales de Windows como los inicios de sesión de SQL Server. Puedes realizar este cambio a través de las propiedades del explorador de objetos de SSMS, o bien puedes usar PowerShell para actualizar las claves del Registro de forma segura. Para asegurarte de que tu infraestructura de servidor funcione sin problemas y sin cuellos de botella relacionados con las licencias, quizá también te interese Explora las licencias de Microsoft para actualizar tus sistemas operativos subyacentes a ediciones de servidor de nivel empresarial.

Usemos PowerShell para modificar el valor de registro «LoginMode». Abre tu consola de PowerShell como administrador y ejecuta el siguiente comando para cambiar el modo de autenticación al modo mixto (valor 2):

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer' -Name 'LoginMode' -Value 2

Ten en cuenta que la ruta del Registro puede variar ligeramente según tu versión concreta de SQL Server, como por ejemplo MSSQL16 para SQL Server 2022. Una vez que hayas aplicado este cambio en el Registro, tienes que reiniciar el servicio de SQL Server en Windows para que el cambio surta efecto. Ejecuta el siguiente comando en la línea de comandos para reiniciar tu instancia predeterminada de SQL Server:

net stop MSSQLSERVER && net start MSSQLSERVER

Explora las licencias de servidores de Microsoft

Comprobación de las cuentas y el estado de los usuarios

A veces, el inicio de sesión existe, pero la cuenta de usuario concreta se ha desactivado, se ha bloqueado por demasiados intentos fallidos de contraseña o no está correctamente asignada a la base de datos de destino. Puedes desbloquear y habilitar rápidamente un inicio de sesión de SQL mediante consultas T-SQL ejecutadas desde SSMS. Cuando resuelves problemas en entornos empresariales, mantener actualizadas tus herramientas de gestión de bases de datos es tan importante como mantener al día los sistemas operativos de tus clientes; además, puedes consultar el Soporte técnico de Microsoft para conocer más políticas sobre el ciclo de vida del software. Ejecuta el siguiente comando T-SQL para asegurarte de que tu inicio de sesión está habilitado y desbloqueado:

ALTER LOGIN [YourDatabaseUser] ENABLE;
ALTER LOGIN [YourDatabaseUser] WITH PASSWORD = 'YourStrongPassword123!';
ALTER LOGIN [YourDatabaseUser] WITH CHECK_POLICY = OFF;

Comprobación de los protocolos de red y reinicio de los servicios

Si tu aplicación web está alojada en un servidor distinto al de tu base de datos, debes habilitar explícitamente los protocolos de red como TCP/IP en el Administrador de configuración de SQL Server. Si TCP/IP está desactivado, los intentos de conexión remota fallarán al instante. Puedes comprobar la conectividad de red y la disponibilidad de los puertos directamente desde tu ordenador cliente usando PowerShell. Ejecuta el siguiente cmdlet para comprobar si el puerto 1433 está abierto y a la escucha en tu servidor de base de datos:

Test-NetConnection -ComputerName "YourServerNameOrIP" -Port 1433

Si esta prueba falla, tendrás que abrir el Administrador de configuración de SQL Server, ir a «Configuración de red de SQL Server», seleccionar «Protocolos» para tu instancia y asegurarte de que TCP/IP esté en «Habilitado». Después de hacer este cambio, reinicia siempre el servicio de SQL Server para que se asigne el puerto correctamente.

Solución avanzada de problemas y cadenas de conexión

Por último, revisa los archivos de configuración de tu aplicación, como web.config o appsettings.json, para asegurarte de que tus cadenas de conexión coinciden con los ajustes de autenticación de tu servidor. Si utilizas la autenticación de SQL Server, asegúrate de que no aparece «Integrated Security=true» en tu cadena de conexión, ya que esto fuerza la autenticación de Windows. Al comprobar sistemáticamente tus modos de autenticación, el estado de las cuentas de usuario y los protocolos de configuración de red, podrás resolver de forma definitiva los problemas de conexión y mantener tu software funcionando de manera eficiente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *