Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SQL Serveur 2000 : problème de casse dans une requête

6 réponses
Avatar
Samuel MONTAGNE
Bonjour à tous !

Nous avons effectué un petit développement attaquant la base de donnees du
logiciel de gestion commercial SAGE.
La base propriétaire vient d'être migrée en base SQL Serveur. Depuis, le
logiciel développé ne fonctionne plus.

En effet, nous nous heurtons à un problème de sensibilité de la casse dans
le nom des colonnes des tables SQL Serveur.

Pour être clair, si j'ai une table T1 possédant une colonne "col1" (en
minuscule) et que je fait une requete du style :
"select COL1 from T1" (en majuscule)
ça ne marche pas !

Par contre si je fait :
"select col1 from T1" (en minuscule), ça marche !

Par contre, sur une autre base de données ayant la même structure et
tournant sur le
même serveur SQL Serveur, ce problème ne se pose pas et les requêtes
fonctionnent
quelque soit la casse du texte de la requête !

Y a t-il une propriété à changer quelque part dans SQL serveur pour ne pas
prendre en compte la casse du nom des colonnes ?

Merci beaucoup.

Samuel MONTAGNE

6 réponses

Avatar
Fred BROUARD
Bonjour,

vous avez sans doute installé le serveur SQL avec une collation sensible à la
casse voir binaire. Pour connaître la casse de l'installation du serveur :
SELECT SERVERPROPERTY('collation')

Si votre collation contient CS ou BIN, elle est sensible à la casse et donc les
noms de tous les objets (base, table, colonnes, utilisateurs....) doivent être
écrit tels que crées.

Il n'est pas possible de changer dynamiquement la collation au niveau serveur.
IL faut réinstaller le serveur.

C'est une chose actuellement mal maîtrisé par les éditeurs de progiciels,
notamment ceux qui portent leurs applications d'Oracle à MS SQL Server. Mais le
discours MS participe a cette confusion, en proposant à l'installation une
collation par défaut qui est insensible à la casse ce qui est à mon sens une
stupidité !!!

Lire les articles que j'ai écrit à ce sujet :
http://cgi.zdnet.fr/itsupport/microsoft/mvp8.htm
http://sql.developpez.com/sqlserver/collations/

A +

--
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 ***********************

Samuel MONTAGNE a écrit:
Bonjour à tous !

Nous avons effectué un petit développement attaquant la base de donnees du
logiciel de gestion commercial SAGE.
La base propriétaire vient d'être migrée en base SQL Serveur. Depuis, le
logiciel développé ne fonctionne plus.

En effet, nous nous heurtons à un problème de sensibilité de la casse dans
le nom des colonnes des tables SQL Serveur.

Pour être clair, si j'ai une table T1 possédant une colonne "col1" (en
minuscule) et que je fait une requete du style :
"select COL1 from T1" (en majuscule)
ça ne marche pas !

Par contre si je fait :
"select col1 from T1" (en minuscule), ça marche !

Par contre, sur une autre base de données ayant la même structure et
tournant sur le
même serveur SQL Serveur, ce problème ne se pose pas et les requêtes
fonctionnent
quelque soit la casse du texte de la requête !

Y a t-il une propriété à changer quelque part dans SQL serveur pour ne pas
prendre en compte la casse du nom des colonnes ?

Merci beaucoup.

Samuel MONTAGNE




Avatar
Walid DIB
Bonjour Fred,

J'ai eu le même soucis, j'ai contourné le problème en modifiant ce
paramètres pour chaque objet de la base :-)


"Fred BROUARD" a écrit :

Bonjour,

vous avez sans doute installé le serveur SQL avec une collation sensible à la
casse voir binaire. Pour connaître la casse de l'installation du serveur :
SELECT SERVERPROPERTY('collation')

Si votre collation contient CS ou BIN, elle est sensible à la casse et donc les
noms de tous les objets (base, table, colonnes, utilisateurs....) doivent être
écrit tels que crées.

Il n'est pas possible de changer dynamiquement la collation au niveau serveur.
IL faut réinstaller le serveur.

C'est une chose actuellement mal maîtrisé par les éditeurs de progiciels,
notamment ceux qui portent leurs applications d'Oracle à MS SQL Server. Mais le
discours MS participe a cette confusion, en proposant à l'installation une
collation par défaut qui est insensible à la casse ce qui est à mon sens une
stupidité !!!

Lire les articles que j'ai écrit à ce sujet :
http://cgi.zdnet.fr/itsupport/microsoft/mvp8.htm
http://sql.developpez.com/sqlserver/collations/

A +

--
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 ***********************

Samuel MONTAGNE a écrit:
> Bonjour à tous !
>
> Nous avons effectué un petit développement attaquant la base de donnees du
> logiciel de gestion commercial SAGE.
> La base propriétaire vient d'être migrée en base SQL Serveur. Depuis, le
> logiciel développé ne fonctionne plus.
>
> En effet, nous nous heurtons à un problème de sensibilité de la casse dans
> le nom des colonnes des tables SQL Serveur.
>
> Pour être clair, si j'ai une table T1 possédant une colonne "col1" (en
> minuscule) et que je fait une requete du style :
> "select COL1 from T1" (en majuscule)
> ça ne marche pas !
>
> Par contre si je fait :
> "select col1 from T1" (en minuscule), ça marche !
>
> Par contre, sur une autre base de données ayant la même structure et
> tournant sur le
> même serveur SQL Serveur, ce problème ne se pose pas et les requêtes
> fonctionnent
> quelque soit la casse du texte de la requête !
>
> Y a t-il une propriété à changer quelque part dans SQL serveur pour ne pas
> prendre en compte la casse du nom des colonnes ?
>
> Merci beaucoup.
>
> Samuel MONTAGNE
>
>





Avatar
Samuel MONTAGNE
Et comment fait-on pour modifier ce paramètre pour chaque objet de la base
??????



"Walid DIB" a écrit dans le message de
news:
Bonjour Fred,

J'ai eu le même soucis, j'ai contourné le problème en modifiant ce
paramètres pour chaque objet de la base :-)


"Fred BROUARD" a écrit :

Bonjour,

vous avez sans doute installé le serveur SQL avec une collation sensible
à la
casse voir binaire. Pour connaître la casse de l'installation du serveur
:
SELECT SERVERPROPERTY('collation')

Si votre collation contient CS ou BIN, elle est sensible à la casse et
donc les
noms de tous les objets (base, table, colonnes, utilisateurs....) doivent
être
écrit tels que crées.

Il n'est pas possible de changer dynamiquement la collation au niveau
serveur.
IL faut réinstaller le serveur.

C'est une chose actuellement mal maîtrisé par les éditeurs de progiciels,
notamment ceux qui portent leurs applications d'Oracle à MS SQL Server.
Mais le
discours MS participe a cette confusion, en proposant à l'installation
une
collation par défaut qui est insensible à la casse ce qui est à mon sens
une
stupidité !!!

Lire les articles que j'ai écrit à ce sujet :
http://cgi.zdnet.fr/itsupport/microsoft/mvp8.htm
http://sql.developpez.com/sqlserver/collations/

A +

--
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 ***********************

Samuel MONTAGNE a écrit:
> Bonjour à tous !
>
> Nous avons effectué un petit développement attaquant la base de donnees
> du
> logiciel de gestion commercial SAGE.
> La base propriétaire vient d'être migrée en base SQL Serveur. Depuis,
> le
> logiciel développé ne fonctionne plus.
>
> En effet, nous nous heurtons à un problème de sensibilité de la casse
> dans
> le nom des colonnes des tables SQL Serveur.
>
> Pour être clair, si j'ai une table T1 possédant une colonne "col1" (en
> minuscule) et que je fait une requete du style :
> "select COL1 from T1" (en majuscule)
> ça ne marche pas !
>
> Par contre si je fait :
> "select col1 from T1" (en minuscule), ça marche !
>
> Par contre, sur une autre base de données ayant la même structure et
> tournant sur le
> même serveur SQL Serveur, ce problème ne se pose pas et les requêtes
> fonctionnent
> quelque soit la casse du texte de la requête !
>
> Y a t-il une propriété à changer quelque part dans SQL serveur pour ne
> pas
> prendre en compte la casse du nom des colonnes ?
>
> Merci beaucoup.
>
> Samuel MONTAGNE
>
>







Avatar
Walid DIB
en fait c pour chaque colonne de chaque objet.. c'est faisable si tu as une
petite base et que tu ne compte spas trop l'élargir mais sinon il faut mieux
réinstaller la base.
Dans l'entreprise manager, sur la table en question, clic drit puis modifier
et c'est le champ "calssement" qu'il faut modifier....

"Samuel MONTAGNE" a écrit :

Et comment fait-on pour modifier ce paramètre pour chaque objet de la base
??????



"Walid DIB" a écrit dans le message de
news:
> Bonjour Fred,
>
> J'ai eu le même soucis, j'ai contourné le problème en modifiant ce
> paramètres pour chaque objet de la base :-)
>
>
> "Fred BROUARD" a écrit :
>
>> Bonjour,
>>
>> vous avez sans doute installé le serveur SQL avec une collation sensible
>> à la
>> casse voir binaire. Pour connaître la casse de l'installation du serveur
>> :
>> SELECT SERVERPROPERTY('collation')
>>
>> Si votre collation contient CS ou BIN, elle est sensible à la casse et
>> donc les
>> noms de tous les objets (base, table, colonnes, utilisateurs....) doivent
>> être
>> écrit tels que crées.
>>
>> Il n'est pas possible de changer dynamiquement la collation au niveau
>> serveur.
>> IL faut réinstaller le serveur.
>>
>> C'est une chose actuellement mal maîtrisé par les éditeurs de progiciels,
>> notamment ceux qui portent leurs applications d'Oracle à MS SQL Server.
>> Mais le
>> discours MS participe a cette confusion, en proposant à l'installation
>> une
>> collation par défaut qui est insensible à la casse ce qui est à mon sens
>> une
>> stupidité !!!
>>
>> Lire les articles que j'ai écrit à ce sujet :
>> http://cgi.zdnet.fr/itsupport/microsoft/mvp8.htm
>> http://sql.developpez.com/sqlserver/collations/
>>
>> A +
>>
>> --
>> 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 ***********************
>>
>> Samuel MONTAGNE a écrit:
>> > Bonjour à tous !
>> >
>> > Nous avons effectué un petit développement attaquant la base de donnees
>> > du
>> > logiciel de gestion commercial SAGE.
>> > La base propriétaire vient d'être migrée en base SQL Serveur. Depuis,
>> > le
>> > logiciel développé ne fonctionne plus.
>> >
>> > En effet, nous nous heurtons à un problème de sensibilité de la casse
>> > dans
>> > le nom des colonnes des tables SQL Serveur.
>> >
>> > Pour être clair, si j'ai une table T1 possédant une colonne "col1" (en
>> > minuscule) et que je fait une requete du style :
>> > "select COL1 from T1" (en majuscule)
>> > ça ne marche pas !
>> >
>> > Par contre si je fait :
>> > "select col1 from T1" (en minuscule), ça marche !
>> >
>> > Par contre, sur une autre base de données ayant la même structure et
>> > tournant sur le
>> > même serveur SQL Serveur, ce problème ne se pose pas et les requêtes
>> > fonctionnent
>> > quelque soit la casse du texte de la requête !
>> >
>> > Y a t-il une propriété à changer quelque part dans SQL serveur pour ne
>> > pas
>> > prendre en compte la casse du nom des colonnes ?
>> >
>> > Merci beaucoup.
>> >
>> > Samuel MONTAGNE
>> >
>> >
>>
>>
>>





Avatar
Fred BROUARD
C'est particulièrement contre performant comme technique !

A +

Walid DIB a écrit:
en fait c pour chaque colonne de chaque objet.. c'est faisable si tu as une
petite base et que tu ne compte spas trop l'élargir mais sinon il faut mieux
réinstaller la base.
Dans l'entreprise manager, sur la table en question, clic drit puis modifier
et c'est le champ "calssement" qu'il faut modifier....

"Samuel MONTAGNE" a écrit :


Et comment fait-on pour modifier ce paramètre pour chaque objet de la base
??????



"Walid DIB" a écrit dans le message de
news:

Bonjour Fred,

J'ai eu le même soucis, j'ai contourné le problème en modifiant ce
paramètres pour chaque objet de la base :-)


"Fred BROUARD" a écrit :


Bonjour,

vous avez sans doute installé le serveur SQL avec une collation sensible
à la
casse voir binaire. Pour connaître la casse de l'installation du serveur
:
SELECT SERVERPROPERTY('collation')

Si votre collation contient CS ou BIN, elle est sensible à la casse et
donc les
noms de tous les objets (base, table, colonnes, utilisateurs....) doivent
être
écrit tels que crées.

Il n'est pas possible de changer dynamiquement la collation au niveau
serveur.
IL faut réinstaller le serveur.

C'est une chose actuellement mal maîtrisé par les éditeurs de progiciels,
notamment ceux qui portent leurs applications d'Oracle à MS SQL Server.
Mais le
discours MS participe a cette confusion, en proposant à l'installation
une
collation par défaut qui est insensible à la casse ce qui est à mon sens
une
stupidité !!!

Lire les articles que j'ai écrit à ce sujet :
http://cgi.zdnet.fr/itsupport/microsoft/mvp8.htm
http://sql.developpez.com/sqlserver/collations/

A +

--
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 ***********************

Samuel MONTAGNE a écrit:

Bonjour à tous !

Nous avons effectué un petit développement attaquant la base de donnees
du
logiciel de gestion commercial SAGE.
La base propriétaire vient d'être migrée en base SQL Serveur. Depuis,
le
logiciel développé ne fonctionne plus.

En effet, nous nous heurtons à un problème de sensibilité de la casse
dans
le nom des colonnes des tables SQL Serveur.

Pour être clair, si j'ai une table T1 possédant une colonne "col1" (en
minuscule) et que je fait une requete du style :
"select COL1 from T1" (en majuscule)
ça ne marche pas !

Par contre si je fait :
"select col1 from T1" (en minuscule), ça marche !

Par contre, sur une autre base de données ayant la même structure et
tournant sur le
même serveur SQL Serveur, ce problème ne se pose pas et les requêtes
fonctionnent
quelque soit la casse du texte de la requête !

Y a t-il une propriété à changer quelque part dans SQL serveur pour ne
pas
prendre en compte la casse du nom des colonnes ?

Merci beaucoup.

Samuel MONTAGNE


















--
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 ***********************
Avatar
Walid DIB
effectivement il faut mieux passer par une sauvegarde et une création de base.
je savais que cette technique allait faire sursauter M. Brouard :)

"Fred BROUARD" a écrit :

C'est particulièrement contre performant comme technique !

A +

Walid DIB a écrit:
> en fait c pour chaque colonne de chaque objet.. c'est faisable si tu as une
> petite base et que tu ne compte spas trop l'élargir mais sinon il faut mieux
> réinstaller la base.
> Dans l'entreprise manager, sur la table en question, clic drit puis modifier
> et c'est le champ "calssement" qu'il faut modifier....
>
> "Samuel MONTAGNE" a écrit :
>
>
>>Et comment fait-on pour modifier ce paramètre pour chaque objet de la base
>>??????
>>
>>
>>
>>"Walid DIB" a écrit dans le message de
>>news:
>>
>>>Bonjour Fred,
>>>
>>>J'ai eu le même soucis, j'ai contourné le problème en modifiant ce
>>>paramètres pour chaque objet de la base :-)
>>>
>>>
>>>"Fred BROUARD" a écrit :
>>>
>>>
>>>>Bonjour,
>>>>
>>>>vous avez sans doute installé le serveur SQL avec une collation sensible
>>>>à la
>>>>casse voir binaire. Pour connaître la casse de l'installation du serveur
>>>>:
>>>>SELECT SERVERPROPERTY('collation')
>>>>
>>>>Si votre collation contient CS ou BIN, elle est sensible à la casse et
>>>>donc les
>>>>noms de tous les objets (base, table, colonnes, utilisateurs....) doivent
>>>>être
>>>>écrit tels que crées.
>>>>
>>>>Il n'est pas possible de changer dynamiquement la collation au niveau
>>>>serveur.
>>>>IL faut réinstaller le serveur.
>>>>
>>>>C'est une chose actuellement mal maîtrisé par les éditeurs de progiciels,
>>>>notamment ceux qui portent leurs applications d'Oracle à MS SQL Server.
>>>>Mais le
>>>>discours MS participe a cette confusion, en proposant à l'installation
>>>>une
>>>>collation par défaut qui est insensible à la casse ce qui est à mon sens
>>>>une
>>>>stupidité !!!
>>>>
>>>>Lire les articles que j'ai écrit à ce sujet :
>>>>http://cgi.zdnet.fr/itsupport/microsoft/mvp8.htm
>>>>http://sql.developpez.com/sqlserver/collations/
>>>>
>>>>A +
>>>>
>>>>--
>>>>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 ***********************
>>>>
>>>>Samuel MONTAGNE a écrit:
>>>>
>>>>>Bonjour à tous !
>>>>>
>>>>>Nous avons effectué un petit développement attaquant la base de donnees
>>>>>du
>>>>>logiciel de gestion commercial SAGE.
>>>>>La base propriétaire vient d'être migrée en base SQL Serveur. Depuis,
>>>>>le
>>>>>logiciel développé ne fonctionne plus.
>>>>>
>>>>>En effet, nous nous heurtons à un problème de sensibilité de la casse
>>>>>dans
>>>>>le nom des colonnes des tables SQL Serveur.
>>>>>
>>>>>Pour être clair, si j'ai une table T1 possédant une colonne "col1" (en
>>>>>minuscule) et que je fait une requete du style :
>>>>>"select COL1 from T1" (en majuscule)
>>>>>ça ne marche pas !
>>>>>
>>>>>Par contre si je fait :
>>>>>"select col1 from T1" (en minuscule), ça marche !
>>>>>
>>>>>Par contre, sur une autre base de données ayant la même structure et
>>>>>tournant sur le
>>>>>même serveur SQL Serveur, ce problème ne se pose pas et les requêtes
>>>>>fonctionnent
>>>>>quelque soit la casse du texte de la requête !
>>>>>
>>>>>Y a t-il une propriété à changer quelque part dans SQL serveur pour ne
>>>>>pas
>>>>>prendre en compte la casse du nom des colonnes ?
>>>>>
>>>>>Merci beaucoup.
>>>>>
>>>>>Samuel MONTAGNE
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>
>>

--
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 ***********************