Comment pourrais-je changer le classement par défaut de SQL Server 2008 R2 Express pour l'ensemble du serveur et une base de données particulière?
Existe-t-il un moyen de le faire en utilisant l'interface visuelle de SQL Server Management Studio? Dans la fenêtre Propriétés du serveur (et dans la fenêtre Propriétés de la base de données correspondante), cette propriété n'est pas disponible pour modification.
Réponses:
Oui.
Vous pouvez modifier le classement par défaut de l'instance express SQL Server 2008 R2 et des bases de données individuelles, mais c'est une tâche complexe.
Malheureusement, il n'y a pas d'option visuelle pour le faire via SSMS.
Définition et modification du classement du serveur - SQL Server 2008
Assurez-vous que vous disposez de toutes les informations ou scripts nécessaires pour recréer vos bases de données utilisateur et tous les objets qu'elles contiennent.
Exportez toutes vos données à l'aide d'un outil tel que l'utilitaire bcp. Pour plus d'informations, voir Importation et exportation de données en masse.
Supprimez toutes les bases de données utilisateur.
Reconstruisez la base de données master en spécifiant le nouveau classement dans la propriété SQLCOLLATION de la commande setup
Créez toutes les bases de données et tous les objets qu'elles contiennent.
Importez toutes vos données.
Définition et modification du classement de la base de données - SQL Server 2008
COLLATION
option dans l'CREATE DATABASE
instruction lors de la création d'une nouvelle base de données.De même, définissez les
COLLATION
options dans l'ALTER DATABASE
instruction pour modifier le classement d'une base de données existante.ALTER DATABASE [database_name] COLLATE SQL_Latin1_General_CP1_CI_AS;
Définition et modification du classement des colonnes
la source
Assurez-vous que vous voulez vraiment "supprimer" les bases de données utilisateur comme indiqué dans la réponse ci-dessus. Vous voudrez peut-être simplement «détacher» les bases de données. Ou vraiment, vous ne pouvez rien faire car la reconstruction du maître supprime efficacement tous les liens vers les bases de données utilisateur. Il y a des moments où les bases de données sont créées dans le classement souhaité, mais pas le serveur. Dans ce cas, vous ne voudriez pas avoir à récupérer toutes vos bases de données utilisateur à partir de sauvegardes.
la source
J'ai fait quelque chose comme ça et cela a fonctionné, mais vous devez garder à l'esprit les index qui pointent vers le type de données car text / varchar / nvarchar doivent être supprimés, exécutez le script puis créez les index.
c'est ma première réponse posté pardon mon bordel
la source
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
ALTER DATABASE
de travaillerDÉSAVANTAGES
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.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
ettempdb
) 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.la source