web-dev-qa-db-fra.com

Changer le classement SQL Server en respectant la casse ou en respectant la casse?

J'ai récemment installé SQL Server 2008 et j'ai sélectionné le classement comme sensible à la casse. Je veux qu'il soit insensible à la casse pour toute l'instance (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?

35
JPReddy

Vous devez essentiellement exécuter à nouveau l'installation pour reconstruire la base de données master avec le nouveau classement. Vous ne pouvez pas modifier le classement du serveur entier d'une autre manière.

Voir:

Mise à jour: si vous souhaitez modifier le classement d'une base de données, vous pouvez obtenir le classement actuel en utilisant cet extrait de code 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

Le _CI signifie "insensible à la casse" - si vous voulez respecter la casse, utilisez _CS à sa place:

Latin1_General_CS_AS

Votre commande T-SQL serait donc:

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 disponibles sur le serveur en utilisant:

SELECT * FROM ::fn_helpcollations()

Vous pouvez voir le serveur classement actuel en utilisant:

SELECT SERVERPROPERTY ('Collation')
60
marc_s

Vous pouvez le faire, mais les modifications affecteront les nouvelles données insérées dans la base de données. À long terme, suivez les suggestions ci-dessus.

Il existe également certaines astuces que vous pouvez remplacer le classement, telles que les paramètres des procédures ou fonctions stockées, les types de données d'alias et les variables qui sont 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 littéral se voit attribuer le classement par défaut de la base de données. Vous pouvez utiliser DATABASEPROPERTYEX pour trouver 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.

2
Satya SKJ