SQL Server cómo solucionar el error de Cannot generate SSPI context
Cuando se presenta este error “Cannot generate SSPI context” cuando se conecta SQL Server o si este error se genera en el Event Viewer del Servidor de SQL Server puede ser ocasionado por las siguientes razones:
1. Diferencias de hora entre el servidor SQL Server y el cliente que intenta conectarse
2. Diferencias de zona horarias entre el servidor SQL Server y el cliente que intenta conectarse
3. Diferencias de horas entre el servidor SQL Server y el controlador de dominio
4. No se ha realizado el registro de SPN para SQL Server, el SPN es utilizado por Kerberos.
Un SPN para SQL Server consta de los elementos siguientes:
- ServiceClass: Identifica la clase general del servicio. Ésta siempre es MSSQLSvc para SQL Server.
- Host: Se trata del DNS de nombre de dominio completo del equipo que está ejecutando SQL Server.
- Puerto: Se trata del número de puerto en el que el servicio está escuchando.
Por ejemplo, un SPN típico para un equipo que ejecuta SQL Server es:
MSSQLSvc/SQLSERVER.CONTOSO.COM:1433
Una vez creados los SPN con el comando setSPN, debe verificar la configuración de los servidores DNS, para esto ejecute los comandos ping SQLServer y ping –a [direccionIP] estos comandos deben responde adecuadamente el nombre del servidor y la IP correspondiente. Si este no es caso entonces debe solucionar sus problemas de DNS para que la seguridad de SQL Server funcione adecuadamente.
Cuando se inicia una instancia del servicio de SQL Server que está ejecutando con una cuenta de dominio, ésta intenta registrar su propio SPN en Active Directory mediante una llamada API DsWriteAccountSpn. Si la llamada no tiene éxito, la siguiente advertencia se registra en el Event Viewer:
MSSQLServer EventID: 19011 Descripción: Información de SuperSocket: (SpnRegister): Error 8344.
Para conceder al Servicio de SQL Server para puede configurar automática su SPN entonces debe seguir los siguientes pasos:
- Para configurar el servicio de SQL Server para crear SPN dinámicamente, debe modificar la configuración del control de acceso de la cuenta en el servicio de directorio Active Directory. Debe conceder los permisos "Read ServicePrincipalName" y "Write ServicePrincipalName" para el usuario que está ejecutando el servicio de SQL Server.
Esta configuración se realiza mediante el ADSI Edit, siguiendo los siguientes pasos (http://support.microsoft.com/kb/811889/es):
- Haga clic en Inicio y en Ejecutar, escriba Adsiedit.msc y haga clic en Aceptar.
- En el complemento Edición de ADSI, expanda dominio [nombreDeDominio], expanda DC= nombreDeDominioRaíz, expanda CN=Users, haga clic con el botón secundario del mouse en CN=nombreDeCuenta y, a continuación, haga clic en Propiedades.
- En el cuadro de diálogo Propiedades de CN= nombreDeCuenta, haga clic en la ficha Seguridad.
- En la ficha Seguridad, haga clic en Opciones avanzadas.
- En el cuadro de diálogo Configuración de seguridad avanzada, asegúrese de que ACTUAL se muestra debajo de Entradas de permisos.
Si ACTUAL no aparece, haga clic en Agregar y, a continuación, agregue ACTUAL. - En Entradas de permisos, haga clic en ACTUAL y, a continuación, haga clic en Modificar.
- En el cuadro de diálogo Entrada de permiso, haga clic en la ficha Propiedades.
- En la ficha Propiedades, haga clic en Este objeto sólo en la lista Aplicar eny, a continuación, asegúrese de que las casillas para los permisos siguientes están activadas debajo de Permisos:
- Read ServicePrincipalName
- Write ServicePrincipalName
- Haga clic tres veces en Aceptar y salga del complemento Edición de ADSI.
Saludos,
Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP
http://tiny.cc/comwindows
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
http://ecastrom.spaces.live.com
http://universosql.blogspot.com
http://todosobresql.blogspot.com
http://todosobresqlserver.wordpress.com
http://mswindowscr.org/blogs/sql/default.aspx
Comments