SQL – Event ID: 4 Source: Security-Kerberos – Message: Cannot generate SSPI context

Sintoma:

Esto sucede cuando uno quiere conectar a un motor de SQL Server en la cual está integrado con Kerberos, ya sea de Active Directory u otro.

Mediante ODBC al querer conectarnos a un motor de SQL Server, que reside en un servidor que está unido a un Active Directory, puede ocurrirnos el mensaje de error: “Cannot generate SSPI context”.

Desde el visor de sucesos (Event Viewer) se puede ver más detalle del mensaje de error:

Event ID: 4

Source: Security-Kerberos

Logname: System

Error EventID4 SourceSecurity-Kerberos

Scope del caso:

Para este caso, se ha usado como configuración recomendada para la cuenta de inicio de sesión del servicio de SQL Server a una cuenta del dominio, por ejemplo: DOMINIO\UsuarioSQL01.

Se tiene un Microsoft Windows Server 2008 R2 Active Directory y un SQL Server 2012 (indiferente la versión de ambas plataformas para el mensaje de error)

Solución:

Setear correctamente el SPN (Service Principal Name) del motor de SQL Server y de la cuenta del servicio de SQL Server en Active Directory.

en cualquier de los controladores de dominio.

Para setear las entradas de SPN en AD hacer lo siguiente:

  1. Conocer el usuario utilizado para inicia sesión del servicio de SQL Server. (LocalSystem o Cuenta de Usuario/Servicio)
  2. Situarse en un controlador de dominio (DC – Domain Controller)
  3. Ejecutar el comando: “setspn -A” con las siguientes conbinaciones de nombres.

setspn -A MSSQLSvc/FQDN  nombreCuentaUsuario

setspn -A MSSQLSvc/FQDN:Port  nombreCuentaUsuario

setspn -A MSSQLSvc/servername  nombreCuentaUsuario

setspn -A MSSQLSvc/servername:Port  nombreCuentaUsuario

(reemplazar ‘FQDN’ por el fqdn del servidor donde reside el SQL, reemplazar ‘nombreCuentaUsuario’ por el nombre de la cuenta usada para iniciar sesión del servicio de SQL server, reemplazar ‘Port’ por el número de puerta asignado al protocolo TCP/IP de SQL Server y reemplazar ‘servername’ por el nombre del servidor donde reside el motor de SQL Server)

Aclaración: Todas las combinaciones enumeradas no son sumamente necesarias, puede funcionar con alguna de ellas dependiendo de como se realiza la conexión desde el cliente.

Ejemplos:

setspn -A MSSQLSvc/servidorSQL01.dominio.local DOMINIO\UsuarioSQL01

setspn -A MSSQLSvc/servidorSQL01.dominio.local:54458 DOMINIO\UsuarioSQL01

setspn -A MSSQLSvc/servidorSQL01 DOMINIO\UsuarioSQL01

setspn -A MSSQLSvc/servidorSQL01:54458 DOMINIO\UsuarioSQL01

Por último reiniciar el servicio de SQL Server.

Solución 2: (no resuelve el problema de forma completa y de raíz)

Modificar en la cadena de conexión ODBC, que se está queriendo conectar con el motor de SQL Server, el nombre del servidor y el nombre de la instancia de SQL por la IP y Puerto correspondiente.

Referencias:

Cómo solucionar el mensaje de error “No se puede generar contexto SSPI” (Microsoft Support)

Cannot Generate SSPI context y setspn.exe en SQL Server

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s