업데이트 데이터베이스 스크립트를 실행할 때 오류 코드 2714로 SQL Server 업그레이드 실패
이 문서에서는 데이터베이스 업그레이드 스크립트를 실행할 때 CU(누적 업데이트) 또는 SP(서비스 팩)에서 오류 2714를 보고하는 문제를 해결합니다.
증상
CU 또는 SP를 적용하면 설치 프로그램에서 다음 오류를 보고할 수 있습니다.
데이터베이스 엔진 복구 핸들을 기다리지 못했습니다. SQL Server 오류 로그에서 잠재적인 원인을 확인합니다.
SQL Server 오류 로그를 검토하면 다음 오류 메시지 그룹 중 하나가 표시될 수 있습니다.
2021-07-27 14:08:44.31 spid6s Error: 2714, Severity: 16, State: 6.
2021-07-27 14:08:44.31 spid6s There is already an object named 'DatabaseMailUserRole' in the database.
2021-07-27 14:08:44.31 spid6s Error: 2759, Severity: 16, State: 0.
2021-07-27 14:08:44.31 spid6s CREATE SCHEMA failed due to previous errors.
2021-07-27 14:08:44.31 spid6s Error: 912, Severity: 21, State: 2.
2021-07-27 14:08:44.31 spid6s Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 2714, state 6, 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.
2021-07-27 14:08:44.32 spid6s Error: 3417, Severity: 21, State: 3.
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.
2021-07-27 14:08:44.31 spid6s Error: 2714, Severity: 16, State: 6.
2021-07-27 14:08:44.31 spid6s There is already an object named 'TargetServersRole' in the database.
2021-07-27 14:08:44.31 spid6s Error: 912, Severity: 21, State: 2.
2021-07-27 14:08:44.31 spid6s Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 2714, state 6, 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.
2021-07-27 14:08:44.32 spid6s Error: 3417, Severity: 21, State: 3.
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.
DatabaseMailUserRole 스키마 업그레이드 문제 해결
다음 정보를 검토하여 과 관련된 DatabaseMailUserRole
업그레이드 문제를 resolve.
원인
이 오류는 시스템 스키마, 사용자 또는 역할이 데이터베이스에서 msdb
잘못 구성된 경우에 발생합니다.
업그레이드 스크립트가 데이터베이스에서 스키마 msdb
를 다시 만드는 DatabaseMailUserRole
데 실패할 때도 발생합니다. 이 문제는 스키마가 DatabaseMailUserRole
역할에 의해 DatabaseMailUserRole
소유되지 않은 경우에 발생할 수 있습니다(예: 스키마가 에 의해 dbo
소유된 경우).
CU 또는 SP 설치 중에 실행되는 데이터베이스 업그레이드 스크립트에 대한 자세한 내용은 업데이트를 적용할 때 업그레이드 스크립트 오류 문제 해결을 참조하세요.
해결 방법
T902를 사용하여 SQL Server 중지하고 다시 시작합니다. 예를 들어 명령 프롬프트에서 다음 명령을 실행할 수 있습니다.
기본 instance:
NET START MSSQLSERVER /T902
명명된 인스턴스의 경우:
NET START MSSQL$INSTANCENAME /T902
예방 조치로 데이터베이스를 백업합니다
msdb
.BACKUP DATABASE msdb TO disk = '<backup folder>'
SQL Server Management Studio 열고, SQL Server instance 연결하고, 데이터베이스를 백업합니다
msdb
.데이터베이스>시스템 데이터베이스>>
msdb
보안>스키마>DatabaseMailuserRole을 확장합니다.라는
DatabaseMailUserRole
스키마를 삭제합니다.SQL Server 중지하고 추적 플래그 902 없이 다시 시작합니다.
추적 플래그 902 없이 SQL Server 시작하면 업그레이드 스크립트가 다시 실행되고 스키마가
DatabaseMailUserRole
다시 만들어집니다.- SP 또는 CU 업그레이드 스크립트가 성공적으로 완료되면 SQL Server 오류 로그 및 부트스트랩 폴더를 검사 확인합니다.
- 업그레이드 스크립트가 다시 실패하면 다른 오류에 대한 SQL Server 오류 로그를 검사 새 오류를 해결합니다.
TargetServersRole 역할로 업그레이드 문제 해결
다음 정보를 검토하여 과 관련된 TargetServersRole
업그레이드 문제를 resolve.
원인
이 오류는 업그레이드 스크립트가 데이터베이스에서 TargetServersRole
보안 역할을 msdb
다시 만드는 데 실패할 때 발생합니다. 이 역할은 다중 서버 환경에서 사용됩니다. 기본적으로 TargetServersRole
보안 역할은 가 소유하고 dbo
역할은 스키마를 소유합니다 TargetServersRole
. 실수로 이 연결을 변경하고 설치하려는 업데이트에 이러한 역할 중 하나에 대한 변경 내용이 포함된 경우 업그레이드가 실패하고 오류가 2714: There is already an object named 'TargetServersRole' in the database
반환될 수 있습니다. 오류를 resolve 다음 단계를 수행합니다.
해결 방법
T902를 사용하여 SQL Server 중지하고 다시 시작합니다.
기본 instance:
NET START MSSQLSERVER /T902
명명된 인스턴스의 경우:
NET START MSSQL$INSTANCENAME /T902
예방 조치로 데이터베이스를 백업합니다
msdb
.BACKUP DATABASE msdb TO disk = '<backup folder>'
현재 이 역할의 일부인 사용자 목록(있는 경우)을 만듭니다. 다음 쿼리를 실행하여 역할의 멤버를 나열할 수 있습니다.
EXEC msdb.dbo.sp_helprolemember 'TargetServersRole'
TargetServersRole
다음 문을 사용하여 역할을 삭제합니다.EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
문제가 해결되었는지 검사 추적 플래그
902
를 사용하지 않고 SQL Server instance 다시 시작합니다.3단계에서 로 사용자를 다시 추가합니다
TargetServersRole
.