web-dev-qa-db-fra.com

Échec lors de l'installation de SQL Server 2016 sp2

J'essaie d'installer le nouveau SP2 pour SQL Server 2016, mais il échoue lors de l'installation avec une erreur de moteur. Voici ce que je peux lire dans le journal des erreurs>

Erreur: 468, gravité: 16, état: 9.
Impossible de résoudre le conflit de classement entre "Latin1_General_CI_AS" et "SQL_Latin1_General_CP1_CI_AS" dans l'opération égale à.
Le lot d'échecs d'instructions t-sql:
CRÉER UNE PROCÉDURE sp_sqlagent_get_perf_counters @all_counters BIT = 0 AS BEGIN ...

Erreur: 912, gravité: 21, état: 2.

La mise à niveau au niveau du script pour la base de données 'maître' a échoué car l'étape de mise à niveau 'msdb110_upgrade.sql' a rencontré l'erreur 200, état 7, gravité 25. Il s'agit d'une condition d'erreur grave qui peut interférer avec le fonctionnement normal et la base de données sera mise hors ligne. Si l'erreur s'est produite lors de la mise à niveau de la base de données "maître", elle empêchera le démarrage de l'instance SQL Server entière. Examinez les entrées du journal d'erreurs précédentes pour rechercher des erreurs, effectuez les actions correctives appropriées et redémarrez la base de données afin que les étapes de mise à niveau du script se terminent.

Erreur: 3417, gravité: 21, état: 3.

Impossible de récupérer la base de données master. SQL Server ne peut pas s'exécuter. Restaurez le maître à partir d'une sauvegarde complète, réparez-le ou reconstruisez-le. Pour plus d'informations sur la façon de reconstruire la base de données master, consultez la documentation en ligne de SQL Server.

L'arrêt de SQL Server a été lancé

La base de données principale exécutait "Latin1_General_CI_AS" et MSDB (et autres dbs) exécutait "SQL_Latin1_General_CP1_CI_AS".

J'ai de nouvelles sauvegardes de toutes les bases de données sur le serveur, y compris master et msdb.

Je suis tenté d'essayer de restaurer le maître maître comme indiqué dans https://docs.Microsoft.com/en-us/sql/relational-databases/backup-restore/restore-the-master-database- transact-sql? view = sql-server-2017

Mais j'essaie de m'assurer que cela fonctionnera réellement, et pas seulement d'aggraver la situation.

Comment puis-je récupérer et exécuter mon serveur SQL?

EDIT: J'ai démarré le service mssqlserver comme ceci:

NET START MSSQLSERVER /T902

Cela démarre le serveur, et j'ai examiné msdb110_upgrade.sql, et trouvé un certain nombre de "COLLATE DATABASE_DEFAULT" manquants que j'ai ajoutés.

Mais cela ne prend pas mes changements.

4

J'ai vu cette erreur sur d'autres versions de SQL Server sur une version héritée.

Dans mon cas, cela a été causé par le propriétaire d'un rôle ou un schéma n'était pas la valeur par défaut: quelque chose comme db_datareader a été autorisé par un compte d'utilisateur (ils n'ont plus sysadmin)

Comment récupérer?

  • Impossible de restaurer le maître car la version de la base de données principale était inférieure à la version binaire
  • A créé une nouvelle installation avec la bonne version pour la faire fonctionner, puis a restauré master à cela, puis copié master mdf à l'installation d'origine.

Malheureusement, je ne me souviens plus des détails exacts maintenant.
C'est la seule fois en 20 ans de SQL Server que j'ai ...

  • vu un échec d'installation du Service Pack qui arrête l'exécution de SQL Server
  • a dû faire face à un décalage de version lors de la restauration du maître
4
gbn

Cela répond à mon problème:

SELECT MAX(Name) AS DBName, COUNT(*) AS DatabasesWithSameCollation 
FROM sys.databases 
WHERE name IN ('master', 'msdb') 
GROUP BY collation_name 
IF @@ROWCOUNT > 1 BEGIN
  SELECT 'You may have problems when you install SP2, because Master and MSDB do not have the same collation. Did you restore the correct MSDB?'
END 
ELSE SELECT 'Install can proceed'

Quelqu'un a restauré une MSDB à partir d'un autre serveur, qui avait un classement différent.

J'ai fait une réinstallation complète de SQL Server.
Je sais maintenant que SQL Server est entièrement sous contrôle de version. :-)

0