인증서 기반 보안 주체가 사용자 개체를 소유하는 경우 SQL Server 업그레이드 실패
이 문서는 데이터베이스 업그레이드 스크립트를 실행할 때 SQL Server용 CU(누적 업데이트) 또는 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를 다시 시작합니다.
참고 항목
업그레이드 스크립트를 실행하지 못하는 것은 "복구 핸들 실패 데이터베이스 엔진 대기" 오류의 일반적인 원인 중 하나이지만 다른 이유로 이 문제가 발생할 수도 있습니다. 이 오류는 업데이트 설치 관리자가 서비스를 시작하거나 업데이트를 설치한 후 온라인 상태로 가져올 수 없다는 것을 의미합니다. 두 경우 모두 문제 해결에는 오류 로그 및 설치 로그를 검토하여 오류의 원인을 확인하고 적절한 조치를 취해야 합니다.