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.
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?
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 ...
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. :-)