OVH Cloud OVH Cloud

sensibilité maj/min...

1 réponse
Avatar
Daniel Corréia
Bonsoir,


1- comment est-ce possible ?
en tapant une requête dans l'analyseur, celle-ci s'exécute que si la casse
est respectée :

select * from toto ne fonctionne pas
alors que
select * from TOTO fonctionne (car TOTO est le nom de table ainsi
orthographié)

idem pour les noms de colonne ....




2- comment retrouver les paramètres d'install de sql server, notamment la
sensibilité sur les majuscules/minuscules concernant cette fois-ci les
données ?
je crois qu'il n'est pas possible de les modifier (sauf à réinstaller)...


Merci d'avance



--
Daniel CORREIA

1 réponse

Avatar
Fred BROUARD
bonjour,

Daniel Corréia a écrit:
Bonsoir,


1- comment est-ce possible ?
en tapant une requête dans l'analyseur, celle-ci s'exécute que si la casse
est respectée :

select * from toto ne fonctionne pas
alors que
select * from TOTO fonctionne (car TOTO est le nom de table ainsi
orthographié)

idem pour les noms de colonne ....



C'est normal si la collation du serveur est sensible à la casse ou binaire.
Ne pas oublier que TOUS les objets et en particulier leurs noms sont stockées
dans les tables de métadonnées (table système). Si le serveur est installé en
collation forte alors, les noms des objets répondront à cette conformance.
C'est d'ailleurs une très bonne chose que d'installer un serveur en collation
forte et si possible binaire, car on y gagne en performance à tous les niveaux.

Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/collations/


2- comment retrouver les paramètres d'install de sql server, notamment la
sensibilité sur les majuscules/minuscules concernant cette fois-ci les
données ?



SELECT SERVERPROPERTY('collation') AS COLLATION_SERVEUR,
DATABASEPROPERTYEX(DB_NAME(), 'Collation') AS COLLATION_BASE_COURANTE,
TABLE_NAME, COLUMN_NAME, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS

Cette requête va vous donner toutes les colations : serveur, base et colonnes.

je crois qu'il n'est pas possible de les modifier (sauf à réinstaller)...



Il n'y a pas d'autre moyen que de migrer toutes les données :
1) créer une nouvelle base avec la nouvelle collation
2) migrer les données de chaque table à l'aide de l'ordre SQL "INSERT INTO ...
SELECT ... " en spécifiant une clause COLLATE pour chaque colonne
3) supprimer la base source
4) modifier le nom de la base cible.

Car la modification d'une collation (ALTER DATABASE..., ALTER TABLE...) ne vaut
que pour les nouvelles données, pas celles en cours.
De plus une collation différente de celle du serveur pour une base dégrde
sensiblement les performances. C'est donc à éviter.


A +



Merci d'avance






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************