Compartir a través de


Error en la actualización de SQL Server y devuelve el error 15173 o 15559

Este artículo le ayuda a solucionar el error 15173 o 15559 que se produce al instalar una actualización acumulativa (CU) o Service Pack (SP) para Microsoft SQL Server. El error se produce cuando se ejecutan scripts de actualización de base de datos.

Síntomas

Al aplicar una CU o un SP para SQL Server, el programa de instalación notifica el siguiente error:

Error en la espera del controlador de recuperación del Motor de base de datos. Compruebe el registro de errores de SQL Server para buscar posibles causas.

Al comprobar el registro de errores de SQL Server, observará una de las siguientes entradas de error.

Mensaje de error establecido 1:

Error: 15173, Severity: 16, State: 1.
Server principal '##MS_PolicyEventProcessingLogin##' has granted one or more permission(s). Revoke the permission(s) before dropping the server principal.
Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 15173, state 1, severity 16. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
EventID 3417
Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.

Mensaje de error establecido 2:

Dropping existing Agent certificate ...
Error: 15559, Severity: 16, State: 1.
Cannot drop certificate '##MS_AgentSigningCertificate##' because there is a user mapped to it.
Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'sqlagent100_msdb_upgrade.sql' encountered error 15559, state 1, severity 16. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master'database, it will prevent the entire SQL Server instance from starting.Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
Error: 3417, Severity: 21, State: 3.
Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.</br>
SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.

Causa

Este problema se produce porque un script de actualización deja de ejecutarse porque no puede quitar la entidad de seguridad del servidor (ya sea ##MS_PolicyEventProcessingLogin## o ##MS_AgentSigningCertificate##). Este error se produce porque un usuario está asignado a la entidad de seguridad del servidor.

Para obtener más información sobre los scripts de actualización de base de datos que se ejecutan durante la instalación de CU o SP, consulte Solución de errores de script de actualización al aplicar una actualización.

Solución

Para resolver el error 15173 o 15559, siga estos pasos:

  1. Inicie SQL Server junto con la marca de seguimiento (TF) 902. Para obtener más información, consulte Pasos para iniciar SQL con la marca de seguimiento 902.

  2. Conéctese a SQL Server y ejecute una de las siguientes consultas, en función de la entidad de seguridad del servidor mencionada en el mensaje de error:

    SELECT a.name, b.permission_name  
    FROM sys.server_principals a 
    INNER JOIN sys.server_permissions b ON a.principal_id = b.grantee_principal_id 
    INNER JOIN sys.server_principals c ON b.grantor_principal_id = c.principal_id 
    WHERE c.name = '##MS_PolicyEventProcessingLogin##'
    
    SELECT a.name, b.permission_name  
    FROM sys.server_principals a 
    INNER JOIN sys.server_permissions b ON a.principal_id = b.grantee_principal_id 
    INNER JOIN sys.server_principals c ON b.grantor_principal_id = c.principal_id 
    WHERE c.name = '##MS_AgentSigningCertificate##'
    
  3. Para cada uno de los inicios de sesión que se muestran en los resultados de la consulta, ejecute una instrucción como la siguiente para revocar esos permisos.

    Por ejemplo, si alguna de las consultas devuelve los siguientes resultados:

    Nombre: nombre de permiso NT SERVICE\MSSQL$TEST: CONTROL

    En este caso, ejecute cualquiera de las siguientes instrucciones:

    REVOKE CONTROL ON LOGIN::[##MS_PolicyEventProcessingLogin##] TO [NT SERVICE\MSSQL$TEST] AS [##MS_PolicyEventProcessingLogin##]
    
    REVOKE CONTROL ON LOGIN::[##MS_AgentSigningCertificate##] TO [NT SERVICE\MSSQL$TEST] AS [##MS_AgentSigningCertificate]
    
  4. Quite TF 902 de los parámetros de inicio y, a continuación, reinicie SQL Server. Después de que SQL Server se inicie sin TF 902, el script de actualización se ejecutará de nuevo.

    • Si el script de actualización finaliza correctamente, se completa la actualización de SP o CU. Puede comprobar el registro de errores de SQL Server y la carpeta bootstrap para comprobar la instalación completada.

    • Si se produce un error de nuevo en el script de actualización, compruebe el registro de errores de SQL Server para ver las entradas de error adicionales y, a continuación, solucione los nuevos errores.