Error: no se puede generar el contexto SSPI

8

Cuando alguien intenta conectarse a una instancia de SQL Server, aparece el error:

No es posible generar contexto SSPI.

Ayer tuvimos un apagón (no sé cómo decir esta expresión en inglés) y tuve que cerrar nuestros servidores.

Buscando respuestas, encontré esto:

Problema de conectividad de SQL Server 2008: no se puede generar el contexto SSPI

Pero no me ayuda, porque están funcionando bien hasta ayer. No quiero cambiar nada. Pero si es necesario, lo cambiaré.

Obs: no puedo reiniciar el servidor ahora.


Editar: desde mi respuesta, no hemos tenido ningún error.

Racer SQL
fuente
No puedo reiniciar el servidor, tenemos más de 500 usuarios en línea. Realmente no puedo entender qué hacer. No hay nada útil en internet.
Racer SQL
1
Establezca la política de grupo desde el propio servidor para cambiar automáticamente la hora de los usuarios. Si no desea reiniciar el servidor para forzar los cambios en la política de grupo que puede usar gpupdate /force. Más sobre este hermoso tema aquí. Pero recomendaría encarecidamente que esta tarea se entregue al administrador del servidor.
Nelz

Respuestas:

14

'No se puede generar el contexto SSPI' es un error genérico. Puede deberse a muchos problemas, como una contraseña desactualizada, deriva del reloj, permisos de acceso a Active Directory, falta de registro de un SPN y así sucesivamente.

No hay solución a este problema. La única 'solución' es investigar la causa, según KB811889 y / o Solución de errores de Kerberos . Aplicar una solución u otra de recursos aleatorios de Internet, sin comprender la causa, puede o no resolver el problema, puede o no causar frustración, puede o no causar daños irrevocables.

Remus Rusanu
fuente
2
Respuesta-> Aplicar una solución u otra de recursos aleatorios de Internet, sin comprender la causa, puede o no resolver el problema, puede o no causar frustración, puede o no causar daños irrevocables. Respuesta -> "Cambiamos el usuario de SQL SERVICE a uno que es" Administrador de dominio "". -ooooo-kaay entonces.
matao
3

Cambiamos el SQL SERVICE usera uno que es " Domain Admin".

He hecho algunas investigaciones para saber por qué sucede esto. Dice que cuando cierra el servicio, necesita una cuenta con privilegios para crear un nuevo SPN (cuando se vuelve a encender). Si inicia un servicio sin él, se mostrará en NO PUEDE GENERAR CONTEXTO SSPI.

Estamos cambiando los privilegios de nuestra cuenta del sistema.

Espero que ayude a alguien.

Racer SQL
fuente
8
Una buena práctica para las cuentas de servicio es darles los menores privilegios posibles. Darle al administrador de dominio de su cuenta de servicio es lo opuesto a ese enfoque: recomiendo encarecidamente que no lo haga, desde un punto de vista de seguridad.
Mike
2

Tuvimos este problema después de tomar una base de datos de PROD y restaurarla en QA. Nuestra aplicación llamó a tres bases de datos en tres servidores y, aparte de eso, no fue complicado.

Resulta que un SPN falso (Nombre principal del servicio) se estaba interponiendo en la cuenta de servicio bajo la cual la conexión debería haberse estado ejecutando. Descubrimos esto usando los Archivos de programa> Microsoft Kerberos Config Manager.

La solución a corto plazo fue utilizar el Administrador de configuración de SQL Server y cambiar las conexiones del Agente SQL Server y el Agente SQL Server de la cuenta de servicio a 'LocalSystem' en 'Usar la cuenta BuiltIn'.

Bob Sullentrup
fuente
1

No se puede generar el contexto SSPI puede significar exactamente eso. Cuando un cliente se conecta a un servidor SQL, utiliza un método de generación que incluye el tipo de servicio (MsSQLsvr) FQDN del servidor y el puerto. Utiliza DNS para generar el nombre del servidor, por lo que si resuelve el nombre incorrectamente debido a CNAME o archivo de host, etc., la generación fallará. Haga ping al servidor deseado y vea qué respuesta obtiene. Si no es el FQDN del servidor SQL, el SPN se generará incorrectamente y provocará este error.

Adrian Morson
fuente
1

En algunas situaciones, obtendrá este error debido a la configuración de SPN. Por ejemplo, si está realizando pruebas de recuperación ante desastres en un nuevo servidor, puede recibir un error de SSPI mientras se conecta a SQL Server. Aún más extraño es que puede conectarse utilizando SQL Server Management Studio pero no puede conectarse a través de ODBC u OLEDB. Puede haber una solución temporal que probablemente le permita acceder a la base de datos.

Solución alternativa : en cada computadora cliente que intente conectarse a SQL Server, cree una entrada en el archivo host de cada estación de trabajo. El mecanismo exacto que esto usa para solucionar el problema no está confirmado, pero puede ser que su uso anule la necesidad del SPN.

Si bien no se garantiza que esto sea una solución para todos los casos, lo más probable es que vuelva a funcionar. Esto no debe considerarse una solución permanente. Debe resolver el SPN u otros problemas en una situación ideal. Sin embargo, si tiene problemas con las máquinas antiguas de Windows que ejecutan un sistema operativo no compatible o si solo está haciendo pruebas de prueba de recuperación de desastres de concepto, esto debería llevarlo a donde necesita estar para mantener las luces encendidas o la producción de nuevo en funcionamiento.

Jason Geiger
fuente
Solo quiero reiterar que esta es una solución alternativa. Las soluciones alternativas no son soluciones permanentes. Si desea causar menos problemas en el futuro, debe solucionar el problema subyacente que, en mi experiencia, tiene que ver con los SPN.
Jason Geiger
¿Una entrada que asigna el nombre de la máquina a la IP de la máquina?
Bill Greer
1

Experimenté este problema y se resolvió eliminando la entrada SPN en los atributos de la cuenta de la computadora en AD para el servidor

Encuentre la cuenta de la máquina en Usuarios y equipos de AD (Vista avanzada)

ingrese la descripción de la imagen aquí

Luego, elimine las dos entradas en servicePrincipalName para MSSQLSvc

ingrese la descripción de la imagen aquí

Bill Appleton
fuente
0

Tuve un problema similar. Terminé teniendo que eliminar entradas de la información de SPN en la cuenta de la computadora en ADSIEdit.

Después de eliminar las entradas, reinicié el servicio SQL y registró el SPN con la cuenta de recursos de dominio que había creado. Entonces pude acceder a SQL Server de forma remota.

DJSkippy
fuente
0

Para mí, la solución era ejecutar SQL Studio como usuario de dominio con este comando:

runas / user: OtherDomain \ User SSMS.exe

ventisca
fuente
0

Experimenté este problema recientemente. Estaba funcionando como la cuenta de NT SERVICE y cuando cambié a usar una cuenta de servicio, ya no podía conectarme usando SSMS con el nombre de la máquina o el FQDN. Podría conectarme con la dirección IP. Al investigar un poco, descubrí que el SPN en Active Directory para la instancia de SQL estaba registrado en la máquina. Una vez que eliminé esto y luego lo agregué a la cuenta de servicio, y reinicié la máquina SQL, todo funcionó como debería. Feliz de proporcionar más detalles si es necesario.

Rob Hawthorne
fuente