Partager l'article ! Sql Server Collation and commandes case sensitive: Hello à tous, Bon après quelques déboire avec un client, voici u ...
Hello à tous,
Bon après quelques déboire avec un client, voici un petit truc pour comprendre pourquoi d'un seul coup nos commandes T-SQL sont en erreur.
Lorsque nous développpons sur un environnement case insensitive (repérable par leur nom contenant _CI), et bien nos commandes simples T-SQL se fichent éperdument de la casse. Ainsi, si nous devions interroger la table MaTable via une requête Sql, nous pourrions écrire:
SELECT * FROM MaTable
ou
SELECT * FROM matable
ou n'importe quelle combinaison de majuscule - minuscule.
C'est la collation de la base qui est utilisé pour gérer ça.
En revanche, lorsque vous passez sous une collation Case Sensitive (facile à repérer car leur nom contient _CS). La deuxième instruction tombe en erreur. En effet, les tables systèmes contenant les noms des tables sont devenues case sensitive.
Pour changer la collation d'une base, les commandes suivantes peuvent être exécutées:
USE [master]
GO
ALTER DATABASE [MaBase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO ALTER DATABASE [MaBase] COLLATE SQL_Latin1_General_CP1_CI_AS
GO
ALTER DATABASE [MaBase] SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO
A noter que vous pourriez obtenir des erreurs liées à des contraintes ou autres objets actifs. Pour ça, pas d'autre moyens que de les supprimer ou les désactiver.
Liens connexes: