Requisitos de longitud de contraseña en SQL Server 2022: diferencias con 2019 y solución al error “password length is too short”

Al actualizar a SQL Server 2022 muchos administradores descubren que contraseñas cortas que antes eran válidas en 2019 ahora generan el error “password length is too short”. Aunque parece un nuevo límite del motor, en realidad se debe a la política de contraseñas de Windows que, por defecto, se vuelve más estricta en sistemas modernos.

Índice

Entendiendo los límites reales de contraseña en SQL Server 2022

El propio motor mantiene desde hace años la misma ventana “dura” de valores:

  • Máximo: 128 caracteres (imprescindible para la encriptación interna del hash).
  • Mínimo intrínseco: 1 carácter cuando CHECK_POLICY = OFF.

Todo lo que queda fuera de esta ventana—incluido el mínimo cuando CHECK_POLICY está activado—se delega al sistema operativo. Por eso, si instalas SQL Server 2022 sobre Windows Server 2022 o Windows 11 (cuyas directivas iniciales ya exigen ocho caracteres), el mismo script que funcionaba en 2019 dejará de hacerlo.

Tabla comparativa de requisitos

AspectoSQL Server 2019SQL Server 2022Comentario
Longitud máxima128 caracteres128 caracteresLímite fijo e inalterado.
Longitud mínima “intrínseca”
(CHECK_POLICY=OFF)
1 carácter1 carácterSin cambios: el motor acepta incluso “a”.
Longitud mínima con CHECK_POLICY=ONLigada a la GPO/local policy (6–8 caracteres típico)Idéntica (pero los valores por defecto de Windows suben a 8)El entorno Windows marca la diferencia.
Complejidad (cuando está habilitada)≥8 caracteres y 3 de 4 grupos (MAY, min, nº, símbolo)IdénticaDefinida por la regla “Password must meet complexity requirements”.

Diagnóstico paso a paso

1. Verificar si el inicio de sesión usa la política

SELECT name, ispolicychecked
FROM sys.sql_logins
WHERE name = 'TuLogin';

Un ispolicychecked = 1 indica que cualquier cambio de contraseña se validará contra la directiva de Windows.

2. Consultar la directiva en Windows

Accede a Secpol.msc (o a la GPO si es dominio) y localiza:

  • Minimum password length
  • Password must meet complexity requirements

En servidores modernos suele estar en ocho caracteres; si un control remoto la endurece, SQL Server la obedecerá de inmediato.

3. Ajustar o desactivar de forma controlada

Si el contexto lo permite (p. ej. laboratorios, entornos de prueba o migraciones temporales) puedes desactivar la comprobación:

ALTER LOGIN TuLogin
WITH CHECK_POLICY = OFF,
     PASSWORD = 'abc';

Solo debe usarse cuando el riesgo residual sea aceptable.

Soluciones prácticas según el escenario

Entorno de laboratorio o CI/CD efímero

  1. Desactiva la política (CHECK_POLICY = OFF) en los inicios de sesión de prueba.
  2. O bien eleva temporalmente la directiva de Windows a un mínimo de 3 caracteres.
  3. Recuerda revertir los cambios tras las pruebas para no acostumbrarte a contraseñas débiles.

Entorno productivo

  1. Mantén CHECK_POLICY = ON y adopta las directivas de ocho caracteres (o más) como base.
  2. Establece complejidad y expiración coherentes con las normativas de tu sector (PCI‑DSS, ISO 27001, ENS, etc.).
  3. Implementa auditoría (LOGIN_FAILED) y alertas para intentos excesivos, reforzando la defensa en profundidad.
  4. Evalúa pasar a autenticación de Windows o Azure AD — minimizarás cuentas SQL locales y eliminarás contraseñas estáticas.

Buenas prácticas de Microsoft actualizadas

  • Usa contraseñas de al menos 14 caracteres para inicios de sesión SQL que permanezcan habilitados en producción.
  • Combina mayúsculas, minúsculas, dígitos y símbolos; evita patrones repetitivos o triviales.
  • Almacena secretos fuera del código fuente: variables protegidas, Azure Key Vault o certificados de Máquina Virtual.
  • Deshabilita la cuenta sa; crea una cuenta administradora renombrada y protégela con MFA cuando sea posible.
  • Revisa periódicamente sys.sql_logins buscando cuentas con PASSWORD = '' o sin expiración obligatoria.

Preguntas frecuentes

¿SQL Server 2022 establece algún tope más alto de 128 caracteres?

No. La longitud máxima permanece en 128 caracteres; superar esa cifra devuelve Msg 15118.

¿Puedo forzar mínimos distintos para cada base?

No directamente. Las directivas de contraseñas afectan al nivel de servidor; sin embargo, puedes delegar la autenticación en el servicio de directorio (por base) y aplicar normas externas allí.

¿Existe compatibilidad con contraseñas Unicode?

Sí. Internamente se almacenan como varbinary luego de aplicar un hash (SHA‑512 desde SQL Server 2012). El límite de 128 caracteres se refiere a longitud lógica, no a bytes.

¿Se puede saber qué directiva de Windows rechazó la contraseña?

El motor solo propaga el texto “Password validation failed”, por lo que necesitas revisar el Visor de eventos (Security → Audit Failure) en el controlador de dominio o la máquina local para ver el ID 6288/6289.

Checklist de verificación rápida

  • ➊ ¿CHECK_POLICY está en ON?
  • ➋ ¿La GPO mínima supera la longitud de la contraseña propuesta?
  • ➌ ¿La regla de complejidad está activada (tres de cuatro grupos)?
  • ➍ ¿La contraseña aparece en la lista de contraseñas prohibidas (AD Password Filter)?
  • ➎ ¿Se están aplicando políticas de expiración que obliguen a cambio inmediato?

Conclusiones

Los límites estructurales de contraseña en SQL Server no han cambiado entre 2019 y 2022: 1–128 caracteres cuando CHECK_POLICY está desactivado. El error que percibes refleja un sistema operativo con políticas más severas, no un nuevo tope del motor. Mantener la comprobación de políticas activa y adoptar contraseñas largas y complejas es la vía recomendada; solo en entornos controlados deberías desactivar dicha comprobación o reducir temporalmente los requisitos.

Índice