Поделиться через


Обновление SQL Server завершается ошибкой с кодом ошибки 2714 при выполнении скриптов базы данных обновления

В этой статье устранена проблема, из-за которой накопительное обновление (CU) или пакет обновления (SP) сообщает об ошибке 2714 при запуске скриптов обновления базы данных.

Симптомы

При применении cu или sp программа установки может сообщить следующее сообщение об ошибке:

Ошибка при ожидании дескриптора восстановления компонента Database Engine. Проверьте журнал ошибок 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 базе данных.

Это также происходит, когда скрипт обновления не сможет воссоздать схему DatabaseMailUserRole msdb в базе данных. Эта проблема может возникать, если DatabaseMailUserRole схема не принадлежит роли, например, если схема dboпринадлежитDatabaseMailUserRole.

Дополнительные сведения о сценариях обновления базы данных, выполняемых во время установки cu или SP, см. в статье "Устранение неполадок с ошибками скриптов обновления при применении обновления".

Решение

  1. Остановите и перезапустите SQL Server с помощью T902. Например, эту команду можно выполнить из командной строки:

    Для экземпляра по умолчанию:

    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.

    После запуска SQL Server без флага трассировки 902 скрипт обновления выполняется снова, а 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. Остановите и перезапустите SQL Server с помощью T902.

    Для экземпляра по умолчанию:

    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. Чтобы проверить, устранена ли проблема, перезапустите экземпляр SQL Server без использования флага 902трассировки.

  6. Повторно добавьте пользователей из шага 3 в TargetServersRole.