Udostępnij za pośrednictwem


Uaktualnianie programu SQL Server kończy się niepowodzeniem i zwraca błąd 15173 lub 15559

Ten artykuł ułatwia rozwiązywanie problemów z błędem 15173 lub 15559 występującym podczas instalowania aktualizacji zbiorczej (CU) lub dodatku Service Pack (SP) dla programu Microsoft SQL Server. Błąd występuje, gdy są uruchamiane skrypty uaktualniania bazy danych.

Symptomy

W przypadku zastosowania aktualizacji CU lub sp dla programu SQL Server program instalacyjny zgłasza następujący błąd:

Oczekiwanie na dojście odzyskiwania dla aparatu bazy danych nie powiodło się. Sprawdź dziennik błędów programu SQL Server pod kątem potencjalnych przyczyn.

Podczas sprawdzania dziennika błędów programu SQL Server zauważysz jeden z następujących wpisów o błędach.

Komunikat o błędzie ustawiony 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.

Komunikat o błędzie ustawiony 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.

Przyczyna

Ten problem występuje, ponieważ skrypt uaktualniania przestaje działać, ponieważ nie może usunąć podmiotu zabezpieczeń serwera ( ##MS_PolicyEventProcessingLogin## lub ##MS_AgentSigningCertificate##). Ten błąd występuje, ponieważ użytkownik jest mapowany na jednostkę serwera.

Aby uzyskać więcej informacji na temat skryptów uaktualniania bazy danych uruchamianych podczas instalacji aktualizacji aktualizacji lub sp, zobacz Rozwiązywanie problemów z błędami skryptów uaktualniania podczas stosowania aktualizacji.

Rozwiązanie

Aby rozwiązać problem z błędem 15173 lub 15559, wykonaj następujące kroki:

  1. Uruchom program SQL Server razem z flagą śledzenia (TF) 902. Aby uzyskać więcej informacji, zobacz Kroki uruchamiania bazy danych SQL z flagą śledzenia 902.

  2. Połącz się z programem SQL Server i uruchom jedno z następujących zapytań w zależności od jednostki serwera wymienionej w komunikacie o błędzie:

    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. Dla każdego identyfikatora logowania wyświetlanego w wynikach zapytania uruchom instrukcję, taką jak poniżej, aby odwołać te uprawnienia.

    Jeśli na przykład którekolwiek z zapytań zwraca następujące wyniki:

    Nazwa: Nazwa uprawnień NT SERVICE\MSSQL$TEST: CONTROL

    W takim przypadku uruchom jedną z następujących instrukcji:

    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. Usuń program TF 902 z parametrów uruchamiania, a następnie uruchom ponownie program SQL Server. Po uruchomieniu programu SQL Server bez serwera TF 902 skrypt uaktualniania zostanie uruchomiony ponownie.

    • Jeśli skrypt uaktualniania zakończy się pomyślnie, uaktualnienie sp lub CU zostanie ukończone. Aby sprawdzić ukończoną instalację, możesz sprawdzić dziennik błędów programu SQL Server i folder bootstrap.

    • Jeśli skrypt uaktualniania nie powiedzie się ponownie, sprawdź dziennik błędów programu SQL Server, aby uzyskać dodatkowe wpisy błędów, a następnie rozwiąż problemy z nowymi błędami.