L'exportation de toutes les données (y compris les connexions, les serveurs liés, les travaux de l'Agent SQL, les paramètres de la messagerie DB, etc.) et la reconstruction des données au niveau de l'instance, ainsi que le rechargement de toutes les données utilisateur, demandent beaucoup de travail. Et, même après tout cela, il n'y a toujours aucune garantie que vous pouvez mettre à jour le classement par défaut d'une base de données via, ALTER DATABASE
car plusieurs conditions empêcheront l'opération de se terminer (veuillez consulter la section «Modification duALTER DATABASE
classement de la base de données » de la documentation pour plus de détails) .
Il existe cependant une méthode non documentée qui est beaucoup plus simple. Le principal inconvénient étant qu'il n'est pas pris en charge. Cela ne veut pas dire que quelque chose ira mal, juste que si quelque chose se produit, Microsoft n'aidera pas à le réparer (car ils n'ont jamais garanti que cela fonctionnerait).
La méthode dont je parle fonctionne sqlservr.exe
avec le -q {new_collation_name}
commutateur. Il y a un peu plus que cela, mais c'est l'idée de base. Cette méthode met simplement à jour les métadonnées du système, ce qui a des avantages et des conséquences, les principaux étant:
AVANTAGES
- assez rapide
- contourner la plupart des restrictions qui empêchent
ALTER DATABASE
de travailler
- probablement beaucoup plus précis que tout script que les gens ont imaginé au fil des ans pour supprimer et recréer des objets
DÉSAVANTAGES
- non pris en charge en cas de problème
VARCHAR
les données peuvent changer, SI la page de codes est différente entre l'ancien et le nouveau classement, et des caractères avec des valeurs de 128 à 255 (0x80 - 0xFF) existent, et ces caractères n'existent pas comme le même caractère avec la même valeur sur le nouveau code page. Le risque de perte de données existe donc et vos données doivent d'abord être recherchées pour vous assurer que cette condition n'existe pas. Mais cela signifie également qu'il existe de nombreux cas avec uniquement des caractères ayant des valeurs de 0 à 127 qui ne sont pas en danger, même si la page de code change.
- Les types de table définis par l'utilisateur (UDTT) sont ignorés et doivent être mis à jour manuellement.
Pour une description détaillée de ce que la sqlservr.exe -q
méthode fait et ne fait pas (y compris des détails sur le fonctionnement des classements aux différents niveaux et les problèmes potentiels à surveiller), veuillez consulter mon article:
Modification du classement de l'instance, des bases de données et de toutes les colonnes dans toutes les bases de données utilisateur: qu'est-ce qui pourrait mal tourner?
Pour modifier uniquement l'instance (y compris les bases de données du système: master
, model
, msdb
et tempdb
) et une ou plusieurs bases de données (mais pas toutes les bases de données), il suffit de détacher la base de données (s) que vous souhaitez exclure de cette opération, puis les remettre en place une fois la mise à jour du classement terminée.