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

Compatibilité SQL server 2000 et 2005

6 réponses
Avatar
renaud
Bonjour,
Je pose cette question car je n'arrive pas =E0 trouver de r=E9ponse =E0 ma
question en parcourant les forum, j'espere qu'elle n'a pas d=E9j=E0 =E9t=E9
pos=E9e.
Nous sommes pass=E9 d'un moteur de base de donn=E9e SQL server 2000 =E0
SQL server 2005 et la migration avait l'air de s'=EAtre pass=E9e en
douceur. Mais ce matin nous avons constat=E9 que la requete suivante ne
fontionne plus :

select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
and
PERSONNE.NOM like 'ZZ%'

Pour une raison inconnue le SGBDR ne renvoie plus aucun resultat alors
qu'avant oui (et que ce doit =EAtre le r=E9sultat attendu).
Quelqu'un a-t-il une id=E9e, ou a d=E9j=E0 eut ce soucis ?
Changer la requ=EAte n'est pas un probl=E8me mais nous prefererions
comprendre ce qui fait fait d=E9faut ou ce qui est 'incorrecte' aux yeux
de SQL server 2005.
D'avance merci,
Renaud.

6 réponses

Avatar
Sylvain Lafontaine
Tester sur '[a-zA-Z0-9][a-zA-Z0-9][0-9]%' et 'ZZ%' en même temps ne me
semble pas très rusé. Votre requête ne fonctionne plus probablement parce
que la collation sur SQL-Server 2005 est sensible à la casse
(majuscule/minuscule).

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"renaud" wrote in message
news:
Bonjour,
Je pose cette question car je n'arrive pas à trouver de réponse à ma
question en parcourant les forum, j'espere qu'elle n'a pas déjà été
posée.
Nous sommes passé d'un moteur de base de donnée SQL server 2000 à
SQL server 2005 et la migration avait l'air de s'être passée en
douceur. Mais ce matin nous avons constaté que la requete suivante ne
fontionne plus :

select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
and
PERSONNE.NOM like 'ZZ%'

Pour une raison inconnue le SGBDR ne renvoie plus aucun resultat alors
qu'avant oui (et que ce doit être le résultat attendu).
Quelqu'un a-t-il une idée, ou a déjà eut ce soucis ?
Changer la requête n'est pas un problème mais nous prefererions
comprendre ce qui fait fait défaut ou ce qui est 'incorrecte' aux yeux
de SQL server 2005.
D'avance merci,
Renaud.
Avatar
Romelard Fabrice [MVP]
Bonjour,

Cette requête me semble étrange, car vous faites un premier filtre avec le
[a-zA-Z0-9][a-zA-Z0-9][0-9]% puis refiltrez par dessus avec le ZZ%
Pourquoi ne pas faire directement :


select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like 'ZZ[0-9]%'

--
Cordialement.

Romelard Fabrice [MVP]

"renaud" wrote in message
news:
Bonjour,
Je pose cette question car je n'arrive pas à trouver de réponse à ma
question en parcourant les forum, j'espere qu'elle n'a pas déjà été
posée.
Nous sommes passé d'un moteur de base de donnée SQL server 2000 à
SQL server 2005 et la migration avait l'air de s'être passée en
douceur. Mais ce matin nous avons constaté que la requete suivante ne
fontionne plus :

select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
and
PERSONNE.NOM like 'ZZ%'

Pour une raison inconnue le SGBDR ne renvoie plus aucun resultat alors
qu'avant oui (et que ce doit être le résultat attendu).
Quelqu'un a-t-il une idée, ou a déjà eut ce soucis ?
Changer la requête n'est pas un problème mais nous prefererions
comprendre ce qui fait fait défaut ou ce qui est 'incorrecte' aux yeux
de SQL server 2005.
D'avance merci,
Renaud.
Avatar
renaud
Bonjour,

Merci pour vos reponses, en effet la requete ne semble pas très
judicieuse, en fait la chaine de recherche par 'ZZ%' est une chaine de
recherche dynamique (la sous requête est enlevée pour raison de
lisibilité de l'exemple). De plus, même si cette requête est mal
formulée elle n'en reste pas moins correcte, et pourtant SQL 2005 ne
renvoie aucun résultat.
SQL 2005 est configuré comme l'ancien SQL 2000 (avec les modes de
compatibilité) et est aussi insensible à la casse.
Le problème qui se pose à nous n'est pas tant ce cas précis mais
plutôt pourquoi il y a un changement dans le comportement
d'évaluation des chaînes, et doit-on s'attendre à d'autres surpises
?

Renaud.


Romelard Fabrice [MVP] a écrit :

Bonjour,

Cette requête me semble étrange, car vous faites un premier filtre av ec le
[a-zA-Z0-9][a-zA-Z0-9][0-9]% puis refiltrez par dessus avec le ZZ%
Pourquoi ne pas faire directement :


select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like 'ZZ[0-9]%'

--
Cordialement.

Romelard Fabrice [MVP]

"renaud" wrote in message
news:
Bonjour,
Je pose cette question car je n'arrive pas à trouver de réponse à ma
question en parcourant les forum, j'espere qu'elle n'a pas déjà ét é
posée.
Nous sommes passé d'un moteur de base de donnée SQL server 2000 à
SQL server 2005 et la migration avait l'air de s'être passée en
douceur. Mais ce matin nous avons constaté que la requete suivante ne
fontionne plus :

select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
and
PERSONNE.NOM like 'ZZ%'

Pour une raison inconnue le SGBDR ne renvoie plus aucun resultat alors
qu'avant oui (et que ce doit être le résultat attendu).
Quelqu'un a-t-il une idée, ou a déjà eut ce soucis ?
Changer la requête n'est pas un problème mais nous prefererions
comprendre ce qui fait fait défaut ou ce qui est 'incorrecte' aux yeux
de SQL server 2005.
D'avance merci,
Renaud.


Avatar
Fred BROUARD
Bonjour,

en quelle version de SQL Server 2005 cela se produit-il?

SELECT @@VERSION

Release Sqlservr.exe
------------------------------ -------------
RTM 2005.90.1399
SQL Server 2005 Service Pack 1 2005.90.2047

En effet le script suivant produit bien les même effets curieux entre v
2000 et v 2005 :

CREATE TABLE PERSONNE
(NOM VARCHAR(16) COLLATE French_CI_AS)

INSERT INTO PERSONNE VALUES ('ZZZaaa')
INSERT INTO PERSONNE VALUES ('ZZ')
INSERT INTO PERSONNE VALUES ('zzzAAA')
INSERT INTO PERSONNE VALUES ('abc')
INSERT INTO PERSONNE VALUES ('DEF')
INSERT INTO PERSONNE VALUES (' Z A')
INSERT INTO PERSONNE VALUES (' z a')
INSERT INTO PERSONNE VALUES ('ZZ010')
INSERT INTO PERSONNE VALUES ('zz320')
INSERT INTO PERSONNE VALUES ('Zz440')
INSERT INTO PERSONNE VALUES ('AB123')
INSERT INTO PERSONNE VALUES ('ab123')
INSERT INTO PERSONNE VALUES ('Ab123')
INSERT INTO PERSONNE VALUES (NULL)


-- test sous 2000 :
SELECT NOM
FROM PERSONNE
WHERE NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
AND NOM like 'ZZ%'

/********* RÉSULTAT **************
NOM
----------------
ZZ01
zz32
********** RÉSULTAT *************/


-- test sous 2005 (RTM) :
/********* RÉSULTAT **************
NOM
----------------
********** RÉSULTAT *************/

Il faut voir si cela est différent avec la version corrective Pack 1.

A +


renaud a écrit :
Bonjour,
Je pose cette question car je n'arrive pas à trouver de réponse à ma
question en parcourant les forum, j'espere qu'elle n'a pas déjà été
posée.
Nous sommes passé d'un moteur de base de donnée SQL server 2000 à
SQL server 2005 et la migration avait l'air de s'être passée en
douceur. Mais ce matin nous avons constaté que la requete suivante ne
fontionne plus :

select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
and
PERSONNE.NOM like 'ZZ%'

Pour une raison inconnue le SGBDR ne renvoie plus aucun resultat alors
qu'avant oui (et que ce doit être le résultat attendu).
Quelqu'un a-t-il une idée, ou a déjà eut ce soucis ?
Changer la requête n'est pas un problème mais nous prefererions
comprendre ce qui fait fait défaut ou ce qui est 'incorrecte' aux yeux
de SQL server 2005.
D'avance merci,
Renaud.







--
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
Sylvain Lafontaine
Pour la version 2000, vous avez oublié de retranscrire le troisième résultat
Zz440 ou si c'est bien ce que vous avez obtenu?

De mon côté, aucun problème avec SQL-2000 et SQL-2005 SP1 pour avoir le bon
résultat dans les deux cas.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Fred BROUARD" wrote in message
news:
Bonjour,

en quelle version de SQL Server 2005 cela se produit-il?

SELECT @@VERSION

Release Sqlservr.exe
------------------------------ -------------
RTM 2005.90.1399
SQL Server 2005 Service Pack 1 2005.90.2047

En effet le script suivant produit bien les même effets curieux entre v
2000 et v 2005 :

CREATE TABLE PERSONNE
(NOM VARCHAR(16) COLLATE French_CI_AS)

INSERT INTO PERSONNE VALUES ('ZZZaaa')
INSERT INTO PERSONNE VALUES ('ZZ')
INSERT INTO PERSONNE VALUES ('zzzAAA')
INSERT INTO PERSONNE VALUES ('abc')
INSERT INTO PERSONNE VALUES ('DEF')
INSERT INTO PERSONNE VALUES (' Z A')
INSERT INTO PERSONNE VALUES (' z a')
INSERT INTO PERSONNE VALUES ('ZZ010')
INSERT INTO PERSONNE VALUES ('zz320')
INSERT INTO PERSONNE VALUES ('Zz440')
INSERT INTO PERSONNE VALUES ('AB123')
INSERT INTO PERSONNE VALUES ('ab123')
INSERT INTO PERSONNE VALUES ('Ab123')
INSERT INTO PERSONNE VALUES (NULL)


-- test sous 2000 :
SELECT NOM
FROM PERSONNE
WHERE NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
AND NOM like 'ZZ%'

/********* RÉSULTAT **************
NOM
----------------
ZZ01
zz32
********** RÉSULTAT *************/


-- test sous 2005 (RTM) :
/********* RÉSULTAT **************
NOM
----------------
********** RÉSULTAT *************/

Il faut voir si cela est différent avec la version corrective Pack 1.

A +


renaud a écrit :
Bonjour,
Je pose cette question car je n'arrive pas à trouver de réponse à ma
question en parcourant les forum, j'espere qu'elle n'a pas déjà été
posée.
Nous sommes passé d'un moteur de base de donnée SQL server 2000 à
SQL server 2005 et la migration avait l'air de s'être passée en
douceur. Mais ce matin nous avons constaté que la requete suivante ne
fontionne plus :

select PERSONNE.NOM from PERSONNE where
PERSONNE.NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
and
PERSONNE.NOM like 'ZZ%'

Pour une raison inconnue le SGBDR ne renvoie plus aucun resultat alors
qu'avant oui (et que ce doit être le résultat attendu).
Quelqu'un a-t-il une idée, ou a déjà eut ce soucis ?
Changer la requête n'est pas un problème mais nous prefererions
comprendre ce qui fait fait défaut ou ce qui est 'incorrecte' aux yeux
de SQL server 2005.
D'avance merci,
Renaud.







--
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
renaud
Voici ce que me retourne la commande @@VERSION :

Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) Apr 14 2006
01:12:25 Copyright (c) 1988-2005 Microsoft Corporation Standard
Edition on Windows NT 5.2 (Build 3790: Service Pack 1)

Donc après une installation du Service Pack 1.

La requête suivante :

INSERT INTO PERSONNE VALUES ('ZZZaaa')
INSERT INTO PERSONNE VALUES ('ZZ')
INSERT INTO PERSONNE VALUES ('zzzAAA')
INSERT INTO PERSONNE VALUES ('abc')
INSERT INTO PERSONNE VALUES ('DEF')
INSERT INTO PERSONNE VALUES (' Z A')
INSERT INTO PERSONNE VALUES (' z a')
INSERT INTO PERSONNE VALUES ('ZZ010')
INSERT INTO PERSONNE VALUES ('zz320')
INSERT INTO PERSONNE VALUES ('Zz440')
INSERT INTO PERSONNE VALUES ('AB123')
INSERT INTO PERSONNE VALUES ('ab123')
INSERT INTO PERSONNE VALUES ('Ab123')
INSERT INTO PERSONNE VALUES (NULL)

SELECT NOM
FROM PERSONNE
WHERE NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
AND NOM like 'ZZ%'

renvoie maintenant :

--------------------
ZZ010
zz320
Zz440
-----------------

Comme le serveur est configuré pour être insensible à la casse, le
resultat est correct.
Conclusion : on sait pas pourquoi ca marchait pas, mais maintenant ca
marche.
Conclusion 2 : toujours passer un coup de Service Pack (bon, on va dire
que là c'est de notre faute).

Merci à vous de vous être penché sur ce problème.



Fred BROUARD a écrit :

Bonjour,

en quelle version de SQL Server 2005 cela se produit-il?

SELECT @@VERSION

Release Sqlservr.exe
------------------------------ -------------
RTM 2005.90.1399
SQL Server 2005 Service Pack 1 2005.90.2047

En effet le script suivant produit bien les même effets curieux entre v
2000 et v 2005 :

CREATE TABLE PERSONNE
(NOM VARCHAR(16) COLLATE French_CI_AS)

INSERT INTO PERSONNE VALUES ('ZZZaaa')
INSERT INTO PERSONNE VALUES ('ZZ')
INSERT INTO PERSONNE VALUES ('zzzAAA')
INSERT INTO PERSONNE VALUES ('abc')
INSERT INTO PERSONNE VALUES ('DEF')
INSERT INTO PERSONNE VALUES (' Z A')
INSERT INTO PERSONNE VALUES (' z a')
INSERT INTO PERSONNE VALUES ('ZZ010')
INSERT INTO PERSONNE VALUES ('zz320')
INSERT INTO PERSONNE VALUES ('Zz440')
INSERT INTO PERSONNE VALUES ('AB123')
INSERT INTO PERSONNE VALUES ('ab123')
INSERT INTO PERSONNE VALUES ('Ab123')
INSERT INTO PERSONNE VALUES (NULL)


-- test sous 2000 :
SELECT NOM
FROM PERSONNE
WHERE NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
AND NOM like 'ZZ%'

/********* RÉSULTAT **************
NOM
----------------
ZZ01
zz32
********** RÉSULTAT *************/


-- test sous 2005 (RTM) :
/********* RÉSULTAT **************
NOM
----------------
********** RÉSULTAT *************/

Il faut voir si cela est différent avec la version corrective Pack 1.

A +


renaud a écrit :
> Bonjour,
> Je pose cette question car je n'arrive pas à trouver de réponse à ma
> question en parcourant les forum, j'espere qu'elle n'a pas déjà é té
> posée.
> Nous sommes passé d'un moteur de base de donnée SQL server 2000 à
> SQL server 2005 et la migration avait l'air de s'être passée en
> douceur. Mais ce matin nous avons constaté que la requete suivante ne
> fontionne plus :
>
> select PERSONNE.NOM from PERSONNE where
> PERSONNE.NOM like '[a-zA-Z0-9][a-zA-Z0-9][0-9]%'
> and
> PERSONNE.NOM like 'ZZ%'
>
> Pour une raison inconnue le SGBDR ne renvoie plus aucun resultat alors
> qu'avant oui (et que ce doit être le résultat attendu).
> Quelqu'un a-t-il une idée, ou a déjà eut ce soucis ?
> Changer la requête n'est pas un problème mais nous prefererions
> comprendre ce qui fait fait défaut ou ce qui est 'incorrecte' aux yeux
> de SQL server 2005.
> D'avance merci,
> Renaud.
>




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langag e 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 ***********************