SQL Server-uppgraderingen misslyckas och returnerar fel 15173 eller 15559

Den här artikeln hjälper dig att felsöka fel 15173 eller 15559 som inträffar när du installerar en kumulativ uppdatering (CU) eller Service Pack (SP) för Microsoft SQL Server. Felet uppstår när skript för databasuppgradering körs.

Symptom

När du tillämpar en CU eller ett SP för SQL Server rapporterar installationsprogrammet följande fel:

Väntan på databasmotorns återställningshandtag misslyckades. Mer information om orsaker finns i SQL Server-felloggen.

När du kontrollerar SQL Server-felloggen ser du någon av följande felposter.

Felmeddelande 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.

Felmeddelande 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.

Orsak

Det här problemet beror på att ett uppgraderingsskript slutar köras eftersom det inte kan släppa serverns huvudnamn (antingen ##MS_PolicyEventProcessingLogin## eller ##MS_AgentSigningCertificate##). Det här felet beror på att en användare mappas till serverns huvudnamn.

Mer information om databasuppgraderingsskript som körs under CU- eller SP-installationen finns i Felsöka fel med uppgraderingsskript när du tillämpar en uppdatering.

Åtgärd

Följ dessa steg för att lösa felet 15173 eller 15559:

  1. Starta SQL Server tillsammans med spårningsflaggan (TF) 902. Mer information finns i Steg för att starta SQL med spårningsflagga 902.

  2. Anslut till SQL Server och kör en av följande frågor, beroende på serverns huvudnamn som nämns i felmeddelandet:

    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. För var och en av de inloggningar som visas i frågeresultatet kör du en instruktion som följande för att återkalla dessa behörigheter.

    Om någon av frågorna till exempel returnerar följande resultat:

    Namn: Behörighetsnamn NT SERVICE\MSSQL$TEST: CONTROL

    I det här fallet kör du något av följande instruktioner:

    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. Ta bort TF 902 från startparametrarna och starta sedan om SQL Server. När SQL Server startar utan TF 902 körs uppgraderingsskriptet igen.

    • Om uppgraderingsskriptet har slutförts är SP- eller CU-uppgraderingen klar. Du kan kontrollera SQL Server-felloggen och bootstrap-mappen för att verifiera den slutförda installationen.

    • Om uppgraderingsskriptet misslyckas igen kontrollerar du felloggen för SQL Server för ytterligare felposter och felsöker sedan de nya felen.