J'ai récemment installé SQL Server 2008 et j'ai sélectionné le classement en fonction de la casse. Je veux le rendre insensible à la casse pour l'instance entière (pas pour une base de données dans cette instance). Si je modifie le classement, cela affecte-t-il les bases de données existantes? si oui de quelle manière?Modification du classement SQL Server à la casse insensible à la casse?
Répondre
Vous devez essentiellement réexécuter l'installation pour reconstruire la base de données master
avec le nouveau classement. Vous ne pouvez pas modifier le classement de tout le serveur d'une autre manière.
Voir:
- MSDN: Setting and changing the server collation
- How to change database or server collation (au milieu de la page)
Mise à jour: si vous voulez modifier le classement d'une base de données, vous pouvez obtenir le Collationnement actuel à l'aide de cet extrait de T-SQL:
SELECT name, collation_name
FROM sys.databases
WHERE name = 'test2' -- put your database name here
Cela donnera une valeur quelque chose comme:
Latin1_General_CI_AS
Les _CI
signifie "insensible à la casse" - si vous voulez sensible à la casse, utilisez _CS
à sa place:
Latin1_General_CS_AS
Ainsi, votre T- commande SQL serait:
ALTER DATABASE test2 -- put your database name here
COLLATE Latin1_General_CS_AS -- replace with whatever collation you need
Vous pouvez obtenir une liste de tous les classements sont disponibles sur le serveur en utilisant:
SELECT * FROM ::fn_helpcollations()
Vous pouvez voir le classement actuel du serveur en utilisant:
SELECT SERVERPROPERTY ('Collation')
Vous pouvez le faire, mais les changements auront une incidence pour les nouvelles données qui est insérée dans la base de données. À long terme, suivez comme suggéré ci-dessus.
Il existe également certaines astuces permettant de remplacer le classement, telles que les paramètres des procédures stockées ou des fonctions, les types de données d'alias et les variables affectées au classement par défaut de la base de données. Pour modifier le classement d'un type d'alias, vous devez supprimer l'alias et le recréer.
Vous pouvez remplacer le classement par défaut d'une chaîne littérale à l'aide de la clause COLLATE. Si vous ne spécifiez pas de classement, le classement par défaut de la base de données est affecté au littéral. Vous pouvez utiliser DATABASEPROPERTYEX pour rechercher le classement actuel de la base de données.
Vous pouvez remplacer le classement du serveur, de la base de données ou des colonnes en spécifiant un classement dans la clause ORDER BY d'une instruction SELECT.
Ok, merci pour l'information. Maintenant, au moins, je veux essayer de changer la collation de la base de données pour la rendre insensible à la casse. J'ai trouvé cette 'ALTER DATABASE DEV_DB COLLATE [clé insensible à la casse] pour le même. Mais je ne suis pas sûr de la valeur à utiliser pour la casse insensible. Toute aide dans ce sens est appréciable! – JPReddy