Partager via


La mise à niveau de SQL Server échoue si les principaux basés sur un certificat possèdent des objets utilisateur

Cet article vous aide à résoudre un problème dans lequel une mise à jour cumulative (CU) ou service pack (SP) pour SQL Server signale l’erreur 574 lorsque vous exécutez des scripts de mise à niveau de base de données.

Symptômes

Lorsque vous appliquez une cu ou un fournisseur de services pour SQL Server, le programme d’installation retourne le message d’erreur suivant :

Échec de l’attente du handle de récupération du moteur de base de données. Pour connaître les causes potentielles, consultez le journal des erreurs de SQL Server.

En outre, les entrées d’erreur suivantes peuvent être consignées dans le journal des erreurs SQL Server avec les erreurs 912 et 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

Cause

Les principaux de serveur placés entre des marques de hachage doubles (##) sont créés à partir de certificats lorsque SQL Server est installé. Ces principaux doivent être traités comme des principaux créés par le système. Ils ne doivent pas être mappés aux principaux de base de données qui possèdent des objets utilisateur ou msdb d’autres bases de données. Toute modification apportée à cette configuration par défaut peut entraîner des échecs lorsque vous essayez de mettre à niveau SQL Server. Cela est dû au fait que les scripts de mise à niveau supposent que ces objets ont uniquement des dépendances créées par SQL Server.

Résolution

  1. Démarrez SQL Server à l’aide de l’indicateur de trace 902.

  2. Pour déterminer le mappage des principaux de serveur aux principaux de base de données, exécutez la commande suivante :

    EXEC master.sys.sp_helplogins 
    
  3. Remplacez la propriété des objets affectés par un autre utilisateur.

  4. Redémarrez SQL Server sans indicateur 902 de trace afin que le script de mise à niveau puisse se terminer en cours d’exécution.

Note

Bien qu’un échec d’exécution des scripts de mise à niveau soit l’une des causes courantes de l’erreur « Wait on Moteur de base de données recovery handle failed », ce problème peut également se produire pour d’autres raisons. L’erreur signifie que le programme d’installation de mise à jour n’a pas pu démarrer le service ni le mettre en ligne une fois la mise à jour installée. Dans les deux cas, la résolution des problèmes implique un examen des journaux d’erreurs et des journaux d’installation pour déterminer la cause de l’échec et prendre les mesures appropriées.

Voir aussi

Résoudre les échecs de script de mise à niveau lors de l’application d’une mise à jour