Error 401 o "error de inicio de sesión del usuario ' (NULL) '. Motivo: no está asociado con una conexión de SQL Server de confianza "cuando los clientes intentan conectarse a un punto de administración de SMS 2003


Síntomas


Después de instalar y configurar un nuevo punto de administración para Microsoft Systems Management Server (SMS) 2003, puede experimentar uno o varios de los problemas siguientes:
  • Los equipos se detectan y aparecen en la consola de administración de SMS como clientes avanzados, pero el software de cliente de SMS no está instalado en los equipos cliente.
  • Los equipos se detectan y aparecen en la consola de administración de SMS como clientes avanzados, pero el software de cliente SMS estándar se instala en el equipo que se detecta.
  • Los clientes existentes no notifican un estado de los anuncios.
  • El siguiente mensaje se graba en el archivo CAS. log en el equipo cliente avanzado SMS y en el registro de SQLERROR en SQL Server:
    Error de inicio de sesión del usuario ' (NULL) '. Motivo: no está asociado con una conexión de SQL Server de confianza
  • Es posible que el inicio de sesión de IIS del punto de administración contenga el error 401.
Las siguientes entradas pueden aparecer en el punto de administración en el archivo MP_GetAuth. log. En función de si el cliente SMS también está instalado, este archivo de registro se encuentra en la carpeta \% WINDIR%\system32\CCM\Logs\ o en la carpeta \ SMS_CCM \logs\. (% WINDIR% es la carpeta donde está instalado el sistema operativo).
<![LOG[CMPDBConnection::Init(): IDBInitialize::Initialize() failed with 0x80004005]LOG]!><![LOG[Raising event: [SMS_CodePage(437), SMS_LocaleID(1033)] instance ofMpEvent_ConnectDatabaseFailed {      ClientID = "GUID:F4AB9DD6-362A-44B4-BAFA-6797AD71C79F";      DatabaseName = " SMSDBname ";      DateTime = "20030919053031.203000+000";      ErrorCode = "0x80004005";      MachineName = " MPcomputername ";      ProcessID = 5124;      ServerName = " SMSservername ";      SiteCode = " sitecode ";      ThreadID = 3512;      Win32ErrorCode = 0;};]LOG]><time="00:30:31.219+000" date="09-19-2003" component="MP_GetAuth_ISAPI" context="Auth" type="1" thread="3512" file="event.cpp:522"> 
CMPDBConnection::Init(): IDBInitialize::Initialize() failed with 0x80040e4d $$<MP_GetAuth_ISAPI><Wed Feb 4 17:19:29.240 2004 Eastern Standard Time><thread=2664 (0xA68)> 

Causa


Puede evitarse que el punto de administración se conecte al servidor que ejecuta Microsoft SQL Server. Estos problemas pueden ocurrir por cualquiera de las razones siguientes:
  • El punto de administración no tiene los permisos correctos en SQL Server.
  • Hay problemas con el registro del nombre principal de servicio (SPN) de SQL.
  • Existen problemas con Kerberos o con el protocolo sistema de nombres de dominio (DNS).

Solución alternativa


Para evitar este problema, cambie de una conexión TCP a una conexión canalizaciones con nombre entre el punto de administración y SQL Server. También puede usarse para comprobar si el problema está relacionado con la autenticación Kerberos, que usa TCP. Canalizaciones con nombre usa autenticación NTLM. Si al cambiar de TCP a canalizaciones con nombre no se resuelve el problema, ejecute una traza de monitor de red para investigar posibles problemas de conectividad de red. Si al habilitar canalizaciones con nombre en el punto de administración se resuelve el problema, indica que la autenticación Kerberos no se realiza correctamente y los pasos de solución de problemas de este artículo serán útiles para diagnosticar la causa. Para habilitar las canalizaciones con nombre, haga lo siguiente en el servidor del punto de administración. Haga clic en Inicio, haga clic en Ejecutar, escriba cliconfgy, después, haga clic en Aceptar. Esto inicia la herramienta de red de cliente. Agregue el nombre NetBIOS de SQL Server en la pestaña alias con canalizaciones con nombre seleccionadas. Es la opción predeterminada. En SQL Server, ejecute la herramienta de red del servidor y asegúrese de que canalizaciones con nombre se encuentra en la parte superior de la pila de protocolos. El punto de administración consulta SQL cada 10 minutos. Aparecerá una entrada de registro que indica el número de puntos de administración en el sitio. Indica que se ha conectado correctamente.

Más información


Para solucionar estos síntomas, siga los pasos que se indican en el orden en que se presentan.

Comprobar permisos

Para empezar a solucionar estos síntomas, compruebe que el punto de administración tiene los permisos correctos para conectarse a la base de datos SQL. Para ello, siga estos pasos:
  1. En el servidor de punto de administración, haga clic en Inicio, haga clic en Ejecutar, escriba cmdy haga clic en Aceptar. Si su sitio SMS se está ejecutando en el modo de seguridad estándar, vaya al paso 4. Si su sitio SMS se ejecuta en el modo de seguridad avanzada, vaya al paso 2.
  2. Si su sitio SMS ejecuta seguridad avanzada, inicie una nueva ventana de símbolo del sistema que se ejecute en la cuenta del sistema local. Para ello, escriba lo siguiente en un símbolo del sistema y, a continuación, presione ENTRAR:
    ENFutureTime /Interactive cmd
    En el momento que especifique, se abrirá una nueva ventana de símbolo del sistema que se ejecuta con svchost. exe. Nota FutureTime puede ser cualquier momento posterior a la hora actual, en formato de 24 horas.
  3. En un símbolo del sistema, escriba lo siguiente y, a continuación, presione ENTRAR:
    osql-S SQLServer -d SMSdbname -E
    Nota SQLServer es el nombre del servidor que ejecuta SQL Server y SMSdbname es el nombre de la base de datos SQL de su sitio SMS. Si este comando se ejecuta correctamente, el punto de administración tiene los permisos correctos para la base de datos SQL. El comando se ejecuta correctamente si se devuelve una solicitud de 1> . Escriba Exity, después, presione Entrar para volver al símbolo del sistema. Si recibe el siguiente mensaje de error, vaya al paso 4:
    Error de inicio de sesión del usuario ' (NULL) '. Motivo: no está asociado con una conexión de SQL Server de confianza.
  4. Si recibe el mensaje de error "error de inicio de sesión" que se describe en el paso 3, repita el comando, pero use el nombre de dominio completo (FQDN). Por ejemplo, escriba:
    osql-S SQLServer.Europe.Corp.Microsoft.com -d SMSdbname -E
    Si el comando no se ejecuta correctamente, consulte la configuración de DNS del dominio en el que se encuentra el equipo del punto de administración.
  5. Si el comando aún falla, compruebe si el servicio MSSQLServer está usando una cuenta de usuario para iniciar sesión, cambie el servicio para usar la cuenta del sistema local en la pestaña Inicio de sesión de las propiedades del servicio y vuelva a ejecutar los comandos. Si debe ejecutar el servicio con una cuenta de usuario, asegúrese de que la cuenta de usuario se agrega al grupo de administradores del dominio. También tendrá que seguir los pasos descritos en el siguiente artículo de Microsoft Knowledge Base:
    829868 El sitio de seguridad avanzada de Systems Management Server 2003 con SQL remoto no se conecta a SQL Server  

Solución de problemas adicionales

  1. Es posible que los atributos de nombre principal de servicio (SPN) apropiados no se generen para la cuenta que inició los servicios SQL. Para resolver este problema, debe crear manualmente las entradas de nombre de dominio completo (FQDN) y SPN de NetBIOS. Para ello, puede usar la herramienta SetSPN del kit de recursos de Windows 2000 Server. Debe ejecutar la herramienta SetSPN en un equipo que se encuentre en el dominio de SQL Server. Debe usar credenciales de administrador de dominio. Determine si los servicios de SQL se ejecutan como una cuenta de dominio o como la cuenta de equipo local. Para usar la herramienta SetSPN para crear manualmente los SPN apropiados, siga estos pasos: Cuando el servicio SQL se inicia con una cuenta de usuario
    • Para crear el SPN FQDN en una ventana del símbolo del sistema, escriba el siguiente comando:
      setspn-una MSSQLSvc/SqlHostname.mydomain.com: 1433 SqlServiceAccount
    • Para crear el SPN de NetBIOS en la ventana de comandos, escriba el siguiente comando:
      setspn-una MSSQLSvc/SqlHostname: 1433 SqlServiceAccount
    Cuando el servicio SQL se inicia en la cuenta del sistema local Si SQL Server se ejecuta en la cuenta del sistema local, no tiene que configurar manualmente un SPN para SQL Server. El SPN se crea automáticamente cuando se inicia SQL Server y se elimina cuando se detiene el servicio SQL. Si SQL Server se ejecuta en una cuenta de usuario de dominio, debe configurar manualmente un SPN.

    Eliminación de SPN

    Un SPN duplicado para el equipo que ejecuta SQL Server puede causar problemas de conectividad. El siguiente procedimiento quitará los SPN existentes de SQL Server y agregará un nuevo SPN:
    1. Detenga el servicio MSSQL.
    2. Ejecute el comando setspn-L Computer Name para enumerar todos los SPN. El resultado suele ser similar al siguiente:
      MSSQLSvc/MySQLServer dasaccount1 MSSQLSvc/MySQLServer:1433 MSSQLSvc/MySQLServer.MyDomain.com dasaccount1 MSSQLSvc/MySQLServer.MyDomain.com:1433  
      Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base: 
      319723 Cómo usar la autenticación Kerberos en SQL Server  
      Si el servicio MSSQL se ejecuta en la cuenta del sistema local, el SPN se elimina cuando se detiene el servicio MSSQL. Por lo tanto, si un SPN aparece en la salida del comando setspn-L , se trata de un SPN duplicado. Si el servicio MSSQL se ejecuta en una cuenta de usuario de dominio, el SPN se seguirá enumerando al ejecutar el comando setspn-L . Por lo tanto, no puede determinar si el SPN es un duplicado. En ambos casos, para asegurarse de que el SPN no está duplicado, quite y reemplace el SPN tal y como se describe en los pasos 1C a 1I.  
    3. Si se muestran las entradas que contienen MSSQLSvc, use el comando setspn-D para quitar dichas entradas. Por ejemplo, escriba lo siguiente:
      SETSPN: cuenta D MSSQLSvc/mi das das SETSPN-D MSSQLSvc/mydomain. midominio. com <cuenta de das>
    4. Vuelva a ejecutar el comando de nombre de equipo setspn-L para asegurarse de que no aparece ningún listado de MSSQLSvc.
    5. Si el servicio MSSQL se ejecuta en la cuenta del sistema local, asegúrese de que la cuenta de inicio de SQL Server es la cuenta del sistema local. Puede configurar esta opción en la pestaña seguridad en el cuadro de diálogo propiedades del servidor en el Administrador corporativo de SQL Server.
    6. Si el servicio MSSQL se ejecuta en una cuenta de usuario de dominio, registre el SPN con el comando setspn-a como se mencionó anteriormente.
    7. Reinicie el servicio MSSQL.
    8. Después de que la replicación actualice el atributo ServicePrincipalName en las cuentas de dominio, compruebe que los SPN estén registrados correctamente. Para ello, ejecute el siguiente comando:
      Nombre de equipo de setspn-L
    9. Si los SPN están registrados correctamente, pruebe la conexión SMS con los métodos de la sección "comprobar permisos".
  2. En cada sitio principal, asegúrese de que el grupo de seguridad SMS_SitetoSQLConnection contiene las cuentas de equipo o de servicio SMS de todos los servidores secundarios que informan al sitio primario. Normalmente, estas cuentas se agregan al grupo de seguridad SMS_SitetoSQLConnection cuando se instala un sitio. Si el programa de instalación no puede Agregar la cuenta, se registrará el siguiente mensaje de estado del sitio en la consola del administrador de SMS:
    4908-administrador de componentes de sitio no pudo agregar la cuenta del equipo "%1" al grupo de acceso SQL "%2" en el equipo de SQL Server "%3".
  3. Es posible que se deba restablecer la caché de vales de Kerberos. Use la herramienta Kerbtray del kit de recursos del servidor de Windows 2000 para borrar la caché de vales de Kerberos existente. Para obtener más información sobre cómo usar la herramienta Kerbtray, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:  
    232179 Administración de Kerberos en Windows 2000  
  4. Asegúrese de que el servidor DNS del dominio aparece en primer lugar en las propiedades TCP/IP del servidor del punto de administración.
  5. El FQDN para el dominio de destino debe aparecer en la parte superior de la lista de búsqueda de sufijos del servidor del punto de administración. Para cambiar la lista de búsqueda de sufijos, siga estos pasos:
    1. Haga clic en Inicio y en Ejecutar, escriba ncpa.cpl y haga clic en Aceptar.
    2. Haga clic con el botón secundario en la conexión que desee cambiar y, a continuación, haga clic en propiedades.
    3. En el cuadro de diálogo propiedades de nombre de conexión , seleccione protocolo de Internet (TCP/IP) en esta conexión usa los siguientes elementosy, a continuación, haga clic en propiedades.
    4. En la pestaña General , haga clic en avanzadasy, a continuación, haga clic en la pestaña DNS .
    5. Haga clic en anexar estos sufijos DNS (en orden), haga clic en el dominio de destino y, a continuación, mueva el dominio de destino a la parte superior de la lista haciendo clic en la flecha de desplazamiento.
    6. Haga clic en Aceptar dos veces y, después, haga clic en cerrar.
    ===== Nota: este problema solo se ha observado con Systems Management Server 2003 y no afecta a System Center Configuration Manager 2007.

Referencias


Para obtener más información sobre cómo ejecutar la seguridad avanzada de SMS con un servidor SQL Server remoto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
829868 El sitio de seguridad avanzada de Systems Management Server 2003 con SQL remoto no se conecta a SQL Server
Para obtener más información acerca de cómo recuperar SPN de Active Directory, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
298718 Cómo recuperar SPN del directorio
Para obtener más información acerca de Kerberos, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
266080 Respuestas a las preguntas más frecuentes sobre Kerberos
326985 Cómo solucionar problemas relacionados con Kerberos en IIS