2010-07-21 6 views
26

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

47

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:

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') 
+0

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

2

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.