Обновление SQL Server завершается ошибкой, если субъекты на основе сертификатов имеют собственные пользовательские объекты
Эта статья поможет устранить проблему, из-за которой накопительное обновление (CU) или пакет обновления (SP) для SQL Server сообщает об ошибке 574 при запуске скриптов обновления базы данных.
Симптомы
При применении cu или SP для SQL Server программа установки возвращает следующее сообщение об ошибке:
Ошибка при ожидании дескриптора восстановления компонента Database Engine. Проверьте журнал ошибок SQL Server на наличие потенциальных причин.
Кроме того, следующие записи об ошибках могут быть вошли в журнал ошибок SQL Server вместе с ошибками 912 и 3417:
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.
Решение
Запустите SQL Server с помощью флага трассировки 902.
Чтобы определить сопоставление субъектов-серверов с субъектами базы данных, выполните следующую команду:
EXEC master.sys.sp_helplogins
Измените владение затронутыми объектами другим пользователем.
Перезапустите SQL Server без флага
902
трассировки, чтобы скрипт обновления смог завершить работу.
Примечание.
Хотя сбой запуска скриптов обновления является одной из распространенных причин ошибки "Ожидание обработки восстановления ядро СУБД сбой", эта проблема также может возникнуть по другим причинам. Ошибка означает, что установщик обновления не может запустить службу или запустить ее в режим "в сети" после установки обновления. В любом случае устранение неполадок включает проверку журналов ошибок и журналов установки, чтобы определить причину сбоя и принять соответствующие меры.
См. также
Устранение неполадок скрипта обновления при применении обновления