SQL Server mise à niveau échoue si les principaux basés sur les certificats possèdent des objets utilisateur
Cet article vous aide à résoudre un problème dans lequel une mise à jour cumulative (CU) ou un 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 mise à jour cumulative ou un fournisseur de services pour SQL Server, le programme d’installation retourne le message d’erreur suivant :
Attendez que le handle de récupération du moteur de base de données ait échoué. Vérifiez les causes potentielles dans le journal des erreurs 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 à des principaux de base de données qui possèdent des objets utilisateur dans msdb
ou 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. En effet, les scripts de mise à niveau supposent que ces objets ont uniquement des dépendances créées par SQL Server.
Résolution
Commencez SQL Server à l’aide de l’indicateur de trace 902.
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
Remplacez la propriété des objets affectés par un autre utilisateur.
Redémarrez SQL Server sans indicateur
902
de trace afin que le script de mise à niveau puisse terminer l’exécution.
Remarque
Bien que l’échec de l’exécution des scripts de mise à niveau soit l’une des causes courantes de l’erreur « Échec de l’attente du handle de récupération du moteur de base de données », 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 ou le mettre en ligne après l’installation de la mise à jour. Dans les deux cas, la résolution des problèmes implique une révision 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