다음을 통해 공유


SQL Server 업그레이드가 실패하고 오류 15173 또는 15559를 반환합니다.

이 문서는 Microsoft SQL Server용 CU(누적 업데이트) 또는 SP(서비스 팩)를 설치할 때 발생하는 오류 15173 또는 15559 문제를 해결하는 데 도움이 됩니다. 이 오류는 데이터베이스 업그레이드 스크립트를 실행할 때 발생합니다.

증상

SQL Server에 CU 또는 SP를 적용하면 설치 프로그램에서 다음 오류를 보고합니다.

데이터베이스 엔진 복구 핸들을 기다리지 못했습니다. 잠재적 원인은 SQL Server 오류 로그를 참조하세요.

SQL Server 오류 로그를 확인하면 다음 오류 항목 중 하나가 표시됩니다.

오류 메시지 집합 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.

오류 메시지 집합 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.

원인

이 문제는 서버 보안 주체(또는 ##MS_PolicyEventProcessingLogin## ##MS_AgentSigningCertificate##)를 삭제할 수 없기 때문에 업그레이드 스크립트의 실행이 중지되기 때문에 발생합니다. 이 오류는 사용자가 서버 보안 주체에 매핑되어 있기 때문에 발생합니다.

CU 또는 SP 설치 중에 실행되는 데이터베이스 업그레이드 스크립트에 대한 자세한 내용은 업데이트를 적용할 때 업그레이드 스크립트 오류 문제 해결을 참조하세요.

해결

15173 또는 15559 오류를 해결하려면 다음 단계를 수행합니다.

  1. TF(추적 플래그) 902와 함께 SQL Server를 시작합니다. 자세한 내용은 추적 플래그 902를 사용하여 SQL을 시작하는 단계를 참조 하세요.

  2. SQL Server에 연결하고 오류 메시지에 언급된 서버 보안 주체에 따라 다음 쿼리 중 하나를 실행합니다.

    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. 쿼리 결과에 표시되는 각 로그인에 대해 다음과 같은 문을 실행하여 해당 권한을 취소합니다.

    예를 들어 쿼리 중 하나가 다음 결과를 반환하는 경우

    이름: 권한 이름 NT SERVICE\MSSQL$TEST: CONTROL

    이 경우 다음 문 중 하나를 실행합니다.

    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. 시작 매개 변수에서 TF 902를 제거한 다음 SQL Server를 다시 시작합니다. TF 902 없이 SQL Server가 시작되면 업그레이드 스크립트가 다시 실행됩니다.

    • 업그레이드 스크립트가 성공적으로 완료되면 SP 또는 CU 업그레이드가 완료됩니다. SQL Server 오류 로그 및 부트스트랩 폴더를 확인하여 완료된 설치를 확인할 수 있습니다.

    • 업그레이드 스크립트가 다시 실패하면 SQL Server 오류 로그에서 추가 오류 항목을 확인한 다음 새 오류를 해결합니다.