IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

FRENCH_CI_AS, FRENCH_CI_AI problem


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Points : 66
    Points
    66
    Par défaut FRENCH_CI_AS, FRENCH_CI_AI problem
    Bonjour a tous,
    Je suis novice de chez novice dans sql server 2005 mais fort connaisseur de sql server 2000.

    Mon probleme est le suivant :
    Lors de l'éxecution d'un script de création d'une procédure stockée sous sql server 2005, j'ai le message suivant :
    Impossible de résoudre le conflit de classement entre "FRENCH_CI_AS" et "FRENCH_CI_AI" dans l'opération equal to

    et je ne sais pas comment faire pour qu'il n'y ai plus d'erreur.
    Je tien à dire que le script marche bien sur sql server 2000. l'erreur est donc dûe à sql server 2005.

    Merci à tous pour votre aide .
    Science sans conscience ..

  2. #2
    Membre actif
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Points : 224
    Points
    224
    Par défaut
    Salut,
    vu le message d'erreur, tu essayes de comparer 2 champs ayant des classements différents.
    Si c'est vraiment le cas tu peux utiliser l'option collate pour forcer un classement donné.

    le script de ta procédure stockée nous permettrait d'en être sur

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Points : 66
    Points
    66
    Par défaut
    salut, merci pour ton aide, voici le code de ma procstock
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    CREATE PROCEDURE ma_prock
    AS
    BEGIN
    DECLARE @ERREUR	INT
     
     
     
    INSERT into serveur_lié..schema.table (champ1, champ2, etc ....)
    select  champ1, champ2, etc ... from autre_table 
    where champ1 <>0 and champ2 is not null and not exists (select champ1 from serveur_lié..schema.table where champ1=autre_table.champ1)
     
     
    SET @ERREUR=@@ERROR
     
    IF (@ERREUR=0)
    BEGIN
     
    	UPDATE table3 SET champ_x=getdate(),champ_y=1 WHERE champ_z=1
    END
    ELSE
    BEGIN
    	UPDATE table3 SET champ_x=getdate(),champ_y=2 WHERE champ_z=1
    END
     
    END
     
    GO
    Science sans conscience ..

  4. #4
    Membre actif
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Points : 224
    Points
    224
    Par défaut
    effectivement c'est ta comparaison entre les 2 champs qui doit poser problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO serveur_lié..schema.TABLE (champ1, champ2, etc ....)
    SELECT  champ1, champ2, etc ... FROM autre_table 
    WHERE champ1 <>0 AND champ2 IS NOT NULL AND NOT EXISTS (SELECT champ1 FROM serveur_lié..schema.TABLE WHERE champ1=autre_table.champ1)

    pour y remédier utilises la clause collate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO serveur_lié..schema.TABLE (champ1, champ2, etc ....)
    SELECT  champ1, champ2, etc ... FROM autre_table 
    WHERE champ1 <>0 AND champ2 IS NOT NULL AND NOT EXISTS (SELECT champ1 FROM serveur_lié..schema.TABLE WHERE champ1 collate <classement> =autre_table.champ1)
    Pour connaitre la collation d'un champ , utilises sp_help

    Si tu veux que ta comparaison tienne compte des accents utilises le classement
    FRENCH_CI_AS au niveau de ton collate et si c'est le cas contraire utilises FRENCH_CI_AI.


    un cours sur les collations : http://sqlpro.developpez.com/cours/s...er/collations/

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par funboard Voir le message
    salut, merci pour ton aide, voici le code de ma procstock
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    CREATE PROCEDURE ma_prock
    AS
    BEGIN
    DECLARE @ERREUR	INT
    
    
    
    INSERT into serveur_lié..schema.table (champ1, champ2, etc ....)
    select  champ1, champ2, etc ... from autre_table 
    where champ1 <>0 and champ2 is not null and not exists (select champ1 from serveur_lié..schema.table where champ1=autre_table.champ1 COLLATE FRENCH_CI_AS )
    
    
    SET @ERREUR=@@ERROR
    
    IF (@ERREUR=0)
    BEGIN
    
    	UPDATE table3 SET champ_x=getdate(),champ_y=1 WHERE champ_z=1
    END
    ELSE
    BEGIN
    	UPDATE table3 SET champ_x=getdate(),champ_y=2 WHERE champ_z=1
    END
    
    END
    
    GO


    La correction dans le code ci-dessus.

    Le problème ne vient pas de SQL Server 2005 mais probablement du choix de collation effectué lors de l'installation de l'instance.

    A bientôt

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Points : 66
    Points
    66
    Par défaut
    Merci à tous pour vos réponses,

    c'était bien ça le problème.

    j'ai mis collate french_ci_as comme on me l'a dit et ça à marcher.

    merci.
    Science sans conscience ..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo