Delen via


Upgrade van SQL Server mislukt en retourneert fout 15173 of 15559

Dit artikel helpt u bij het oplossen van fouten 15173 of 15559 die optreden wanneer u een cumulatieve update (CU) of Service Pack (SP) voor Microsoft SQL Server installeert. De fout treedt op wanneer databaseupgradescripts worden uitgevoerd.

Symptomen

Wanneer u een CU of EEN SP toepast voor SQL Server, meldt het installatieprogramma de volgende fout:

Wachten op herstelinvoer van database-engine is mislukt. Controleer het SQL Server-foutenlogboek voor mogelijke oorzaken.

Wanneer u het FOUTENlogboek van SQL Server controleert, ziet u een van de volgende foutvermeldingen.

Foutbericht ingesteld 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.

Foutbericht ingesteld 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.

Oorzaak

Dit probleem treedt op omdat een upgradescript niet meer wordt uitgevoerd omdat de server-principal (of ##MS_PolicyEventProcessingLogin## ##MS_AgentSigningCertificate##) niet kan worden verwijderd. Deze fout treedt op omdat een gebruiker is toegewezen aan de server-principal.

Zie Problemen met upgradescripts bij het uitvoeren van een update oplossen voor meer informatie over database-upgradescriptscripts die worden uitgevoerd tijdens de CU- of SP-installatie.

Oplossing

Voer de volgende stappen uit om de fout 15173 of 15559 op te lossen:

  1. Start SQL Server samen met traceringsvlag (TF) 902. Zie Stappen voor het starten van SQL met traceringsvlag 902 voor meer informatie.

  2. Maak verbinding met SQL Server en voer een van de volgende query's uit, afhankelijk van de server-principal die wordt vermeld in het foutbericht:

    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. Voer voor elk van de aanmeldingen die worden weergegeven in de queryresultaten een instructie uit, zoals het volgende om deze machtigingen in te trekken.

    Als een van de query's bijvoorbeeld de volgende resultaten retourneert:

    Naam: Machtigingsnaam NT SERVICE\MSSQL$TEST: CONTROL

    Voer in dit geval een van de volgende instructies uit:

    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. Verwijder TF 902 uit de opstartparameters en start SQL Server opnieuw. Nadat SQL Server zonder TF 902 is gestart, wordt het upgradescript opnieuw uitgevoerd.

    • Als het upgradescript is voltooid, is de SP- of CU-upgrade voltooid. U kunt het SQL Server-foutenlogboek en de bootstrap-map controleren om de voltooide installatie te controleren.

    • Als het upgradescript opnieuw mislukt, controleert u het SQL Server-foutenlogboek op aanvullende foutvermeldingen en lost u de nieuwe fouten op.