Compartilhar via


SQL Server atualização falha e retorna o erro 15173 ou 15559

Este artigo ajuda você a solucionar problemas de erro 15173 ou 15559 que ocorrem quando você instala uma CU (Atualização Cumulativa) ou Service Pack (SP) para Microsoft SQL Server. O erro ocorre quando os scripts de atualização de banco de dados são executados.

Sintomas

Quando você aplica uma CU ou um SP para SQL Server, o programa de instalação relata o seguinte erro:

Falha no identificador de recuperação do Mecanismo de Banco de Dados. Verifique o log de erros SQL Server em busca de possíveis causas.

Quando você marcar o log de erros SQL Server, você observa uma das entradas de erro a seguir.

Conjunto de mensagens de erro 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.

Conjunto de mensagens de erro 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.

Motivo

Esse problema ocorre porque um script de atualização para de ser executado porque não pode soltar a entidade de servidor (ou ##MS_PolicyEventProcessingLogin####MS_AgentSigningCertificate##). Esse erro ocorre porque um usuário é mapeado para a entidade de servidor.

Para obter mais informações sobre scripts de atualização de banco de dados executados durante a instalação de CU ou SP, confira Solucionar problemas de falhas de script de atualização ao aplicar uma atualização.

Resolução

Para resolve o erro 15173 ou 15559, siga estas etapas:

  1. Inicie SQL Server junto com o sinalizador de rastreamento (TF) 902. Para obter mais informações, consulte Etapas para iniciar o SQL com o sinalizador de rastreamento 902.

  2. Conecte-se a SQL Server e execute uma das seguintes consultas, dependendo da entidade de segurança do servidor mencionada na mensagem de erro:

    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 um dos logons exibidos nos resultados da consulta, execute uma instrução como a seguinte para revogar essas permissões.

    Por exemplo, se uma das consultas retornar os seguintes resultados:

    Nome: nome da permissão NT SERVICE\MSSQL$TEST: CONTROL

    Nesse caso, execute uma das seguintes instruções:

    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. Remova o TF 902 dos parâmetros de inicialização e reinicie SQL Server. Depois que SQL Server começar sem o TF 902, o script de atualização será executado novamente.

    • Se o script de atualização for concluído com êxito, a atualização de SP ou CU será concluída. Você pode marcar a pasta SQL Server log de erros e bootstrap para verificar a instalação concluída.

    • Se o script de atualização falhar novamente, marcar o log de erros SQL Server para entradas de erro adicionais e, em seguida, solucionar problemas dos novos erros.