인증서 기반 보안 주체가 사용자 개체를 소유하는 경우 SQL Server 업그레이드가 실패합니다.
이 문서에서는 데이터베이스 업그레이드 스크립트를 실행할 때 CU(누적 업데이트) 또는 SQL Server SP(서비스 팩)가 오류 574를 보고하는 문제를 해결하는 데 도움이 됩니다.
증상
SQL Server CU 또는 SP를 적용하면 설치 프로그램에서 다음 오류 메시지가 반환됩니다.
데이터베이스 엔진 복구 핸들을 기다리지 못했습니다. SQL Server 오류 로그에서 잠재적인 원인을 확인합니다.
또한 다음 오류 항목은 오류 912 및 3417과 함께 SQL Server 오류 로그에 기록될 수 있습니다.
15136 The database principal is set as the execution context of one or more procedures, functions, or event notifications and cannot be dropped.
15138 The database principal owns a %S_MSG in the database, and cannot be dropped.
15141 The server principal owns one or more %S_MSG(s) and cannot be dropped.
15154 The database principal owns an %S_MSG and cannot be dropped.
15155 The server principal owns a %S_MSG and cannot be dropped.
15183 The database principal owns objects in the database and cannot be dropped.
15184 The database principal owns data types in the database and cannot be dropped.
15186 The server principal is set as the execution context of a trigger or event notification and cannot be dropped.
15284 The database principal has granted or denied permissions to objects in the database and cannot be dropped.
15421 The database principal owns a database role and cannot be dropped.
27226 The database principal has granted or denied permissions to catalog objects in the database and cannot be dropped.
33015 The database principal is referenced by a %S_MSG in the database, and cannot be dropped.
Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'SSIS_hotfix_install.sql' encountered error 945, state 2, severity 25. 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.
SQL Server shutdown has been initiated
원인
이중 해시 표시(##) 내에 묶인 서버 보안 주체는 SQL Server 설치될 때 인증서에서 만들어집니다. 이러한 보안 주체는 시스템에서 만든 보안 주체로 처리되어야 합니다. 사용자 개체를 소유하는 데이터베이스 보안 주체 또는 다른 데이터베이스에 msdb
매핑해서는 안 됩니다. 이 기본 구성을 변경하면 SQL Server 업그레이드하려고 할 때 오류가 발생할 수 있습니다. 업그레이드 스크립트는 이러한 개체에 SQL Server 만든 종속성만 있다고 가정하기 때문입니다.
해결 방법
추적 플래그 902를 사용하여 SQL Server 시작합니다.
서버 보안 주체와 데이터베이스 보안 주체의 매핑을 확인하려면 다음 명령을 실행합니다.
EXEC master.sys.sp_helplogins
영향을 받는 개체의 소유권을 다른 사용자로 변경합니다.
업그레이드 스크립트 실행을 완료할 수 있도록 추적 플래그
902
없이 SQL Server 다시 시작합니다.
참고
업그레이드 스크립트를 실행하지 못하는 것은 "데이터베이스 엔진 복구 핸들 대기 실패" 오류의 일반적인 원인 중 하나이지만 이 문제는 다른 이유로 발생할 수도 있습니다. 이 오류는 업데이트 설치 관리자가 서비스를 시작하거나 업데이트가 설치된 후 온라인으로 가져올 수 없음을 의미합니다. 두 경우 모두 문제 해결에는 오류 로그 및 설치 로그를 검토하여 오류의 원인을 확인하고 적절한 조치를 취해야 합니다.