다음을 통해 공유


업데이트 데이터베이스 스크립트를 실행할 때 오류 코드 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업그레이드 문제를 해결합니다.

원인

이 오류는 시스템 스키마, 사용자 또는 역할이 데이터베이스에서 msdb 잘못 구성된 경우에 발생합니다.

또한 업그레이드 스크립트가 데이터베이스에서 스키마 msdbDatabaseMailUserRole 다시 만드는 데 실패할 때도 발생합니다. 이 문제는 스키마가 DatabaseMailUserRole 역할에 의해 DatabaseMailUserRole 소유되지 않은 경우(예: 스키마가 소유하는 dbo경우) 발생할 수 있습니다.

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

해결

  1. T902를 사용하여 SQL Server를 중지하고 다시 시작합니다. 예를 들어 명령 프롬프트에서 다음 명령을 실행할 수 있습니다.

    기본 인스턴스의 경우:

    NET START MSSQLSERVER /T902
    

    명명된 인스턴스의 경우:

    NET START MSSQL$INSTANCENAME  /T902
    
  2. 예방 조치로 데이터베이스를 백업합니다 msdb .

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. SQL Server Management Studio를 열고, SQL Server 인스턴스에 연결하고, 데이터베이스를 백업합니다 msdb .

  4. 데이터베이스 시스템 데이터베이스>msdb>보안>스키마>DatabaseMailuserRole을 확장합니다.>

  5. 라는 DatabaseMailUserRole스키마를 삭제합니다.

  6. SQL Server를 중지하고 추적 플래그 902 없이 다시 시작합니다.

    추적 플래그 902 없이 SQL Server가 시작되면 업그레이드 스크립트가 다시 실행되고 스키마가 DatabaseMailUserRole 다시 만들어집니다.

    • SP 또는 CU 업그레이드 스크립트가 성공적으로 완료되면 SQL Server 오류 로그 및 부트스트랩 폴더를 확인하여 확인합니다.
    • 업그레이드 스크립트가 다시 실패하면 SQL Server 오류 로그에서 다른 오류를 확인하고 새 오류를 해결합니다.

TargetServersRole 역할의 업그레이드 문제 해결

다음 정보를 검토하여 와 관련된 TargetServersRole업그레이드 문제를 해결합니다.

원인

이 오류는 업그레이드 스크립트가 데이터베이스에서 TargetServersRole 보안 역할을 msdb 다시 만드는 데 실패할 때 발생합니다. 이 역할은 다중 서버 환경에서 사용됩니다. 기본적으로 TargetServersRole 보안 역할은 해당 스키마가 dbo소유하며 역할은 스키마를 소유합니다 TargetServersRole . 실수로 이 연결을 변경하고 설치하는 업데이트에 이러한 역할 중 하나에 대한 변경 내용이 포함된 경우 업그레이드가 실패하고 오류가 2714: There is already an object named 'TargetServersRole' in the database반환될 수 있습니다. 오류를 해결하려면 다음 단계를 따릅니다.

해결

  1. T902를 사용하여 SQL Server를 중지하고 다시 시작합니다.

    기본 인스턴스의 경우:

    NET START MSSQLSERVER /T902
    

    명명된 인스턴스의 경우:

    NET START MSSQL$INSTANCENAME /T902
    
  2. 예방 조치로 데이터베이스를 백업합니다 msdb .

    BACKUP DATABASE msdb TO disk = '<backup folder>'
    
  3. 현재 이 역할의 일부인 사용자(있는 경우) 목록을 만드세요. 다음 쿼리를 실행하여 역할의 멤버를 나열할 수 있습니다.

    EXEC msdb.dbo.sp_helprolemember 'TargetServersRole'
    
  4. TargetServersRole 다음 문을 사용하여 역할을 삭제합니다.

    EXEC msdb.dbo.sp_droprole @rolename = N'TargetServersRole'
    
  5. 문제가 해결되었는지 확인하려면 추적 플래그 902를 사용하지 않고 SQL Server 인스턴스를 다시 시작합니다.

  6. 3단계에서 .로 사용자를 다시 추가합니다 TargetServersRole.