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 :

SQL Server, Erreur numéro 468 ?


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Points : 43
    Points
    43
    Par défaut SQL Server, Erreur numéro 468 ?
    Bonjour,

    J'ai SQL Server 2005 sur un ordinateur et je suis capable d'exécuter mes procédures stockées et tout sans anicroches. Cependant, si je vais sur un autre ordinateur qui possède lui aussi SQL Server 2005, quelques unes de mes procédures stockées se terminent en me faisant une erreur, la 468. Je n'ai rien trouvé sur MSDN concernant cette erreur...

    De plus, je ne sais pas si ceci pourrait en être la cause, car entre les deux SQL Server, le premier (celui qui fonctionne) est sous FRENCH_CI_AS tandis que l'autre est sur SQL_Latin1_General_CP1_CI_AS. Mais, dans mes procédures qui ne fonctionnent plus, je n'utilise pas de nombres à virgules, qui je crois était une des différences entre les deux langues.

    Voici le code de ma procédure qui fonctionne sous l'un et non sous l'autre :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    CREATE PROCEDURE EqKilbridgeWester (
        @ListeOptions    nvarchar(1000),
        @ListeSG        nvarchar(1000),
        @Tps_Cycle        float,
        @Code_methode    nvarchar(10),
        @VerifCouple    bit,
        @VerifZones        bit,
        @VerifCompt        bit,
        @Reussi            bit = 0 output)
    WITH ENCRYPTION
    AS
     
    SET NOCOUNT OFF
     
    DECLARE
    @SQL                nvarchar(1000),
    @NbrElemNonPlace    int,
    @RetourProc            int;
     
    --Création de la table temporaire qui servira pour garder 
    -- certaines informations des éléments
    CREATE TABLE #Temp_Elements(
        No_element        char(5),
        No_Colonne        int,
        Tps_elem        float,
        Fait            bit DEFAULT 0
    );
     
    --------------------------------------------------------------------------------------
    --------------------------------------------------------------------------------------
     
    BEGIN TRY
    BEGIN TRANSACTION
     
        --Insertion des informations des éléments dans la table temporaire
        -- (No_element, Tps_elem, Prédécesseurs)
        Set @SQL ='Insert into #Temp_Elements(No_element, Tps_elem)
            Select e.No_element, e.Tps_elem from Elements e where e.No_element IN (
                Select d.No_element from Diag_Options d where d.Code_option IN (
                    Select o.Code_option from Options o where o.Code_option IN (' + @ListeOptions + ')
                    UNION
                    Select o2.Code_option from Options o2 where o2.Obligatoire_opt = 1 AND (o2.Code_Option NOT IN (
                        Select do.Option_1 from Dependance_Opt do) OR o2.Code_Option NOT IN (
                        Select do2.Option_2 from Dependance_Opt do2))))
            INTERSECT 
            Select e.No_element, e.Tps_elem from Elements e where e.No_element NOT IN (
                Select e2.No_element from Elements e2 where e2.code_sgrpe IN (' + @ListeSG + '));';
        Exec sp_executesql @SQL;
     
        Exec pColonnePere
            @Reussi = @RetourProc OUTPUT;
     
        Select @NbrElemNonPlace=count(*) from #Temp_Elements;
     
    if @RetourProc = 1
    BEGIN
     
    WHILE @NbrElemNonPlace > 0 
    BEGIN
     
    ...
     
    END;
     
    COMMIT TRANSACTION
     
    --Affectation de 1 si la procédure s'est complétée
    Set @Reussi = 1;
    END TRY
    Mais, en fait, la procédure s'arrête au
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exec pColonnePere
            @Reussi = @RetourProc OUTPUT;
    Alors, le contenu du While ne vient pas affecter ma procédure. (pour simplifier le message)

    Donc voici le code de mon autre procédure pColonnePere :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    CREATE PROCEDURE pColonnePere (
        @Reussi            int = 0 output)
    WITH ENCRYPTION
    AS
     
      SET NOCOUNT OFF
     
    DECLARE
    @No_element_pere    char(5),
    @No_element_fils    char(5),
    @Col_elem            int;
     
    --Création de la table temporaire qui servira pour garder 
    -- certaines informations des éléments
    CREATE TABLE #Temp_Colonne(
        No_element        char(5),
        Fait            bit DEFAULT 0
    )
     
    BEGIN TRY
    BEGIN Transaction
     
        Insert into #Temp_Colonne(No_element)
            Select No_element from #Temp_Elements;
     
        Update #Temp_Colonne set Fait = 1 where No_element NOT IN (
            Select No_elem_fils from Preseances);
     
        Update #Temp_Elements set No_Colonne = 1 where No_element NOT IN (
            Select No_elem_fils from Preseances);
     
    WHILE 1=1
    BEGIN
     
    ...
     
    END;
    set @Reussi = 1;
    COMMIT TRANSACTION
    END TRY
    Elle ne se rend même pas à la première ligne de ma procédure, serait-ce dans la déclaration ?

    Merci,

    Évans

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Il ne te renvoit pas de méssage d'érreur sinon que le numero de l'érreur ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre actif Avatar de f_bobo
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Points : 281
    Points
    281
    Par défaut
    Salut,

    En fait, il faut faire un collate FRENCH_CI_AS sur les champs provenant de ton serveur qui est en SQL_Latin1_General_CP1_CI_AS.
    J'ai eu des erreurs dans mes requêtes à cause de cela et comme c'est en test avant d'en faire des procédures, j'aurai eu la même erreur...

    En espérant que cela t'aide

    Cordialement,
    Cordialement,

    Florent

    Je penche donc je suis...

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Pour la première question, en fait c'est grâce à un try catch que je capture cette erreur avec un
    print
    error_number()

    Le COLLATE French_CI_AS est-ce que je le mets dans ma procédure stockée au début (comme le USE databasename) ?

    Merci,

    Évans

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Utilise alors ERROR_MESSAGE() pour capturer le méssage d'érreur.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Le message est le suivant :
    Impossible de résoudre le conflit entre "French_CI_AS" et "SQL_Latin1_General_CP1_CI_AS" pour l'opérateur equal to.

    C'est bel et bien concernant la langue du serveur, mais dans ma base de données, tous les champs sont en French_CI_AS.

    Merci,

    Évans

  7. #7
    Membre actif Avatar de f_bobo
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Points : 281
    Points
    281
    Par défaut
    Bien sûr que dans ta base tout est en French...
    Mais c'est lorsque tu veux comparer des champs de cette base avec celle qui est en SQl_Latin1 que le serveur ne s'y retrouve pas.
    C'est seulement à ce moment là qu'il faut mettre le collate.
    Cordialement,

    Florent

    Je penche donc je suis...

  8. #8
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    Mais alors, le Collate je devrais le faire durant mon traitement dans ma procédure ?

    Ou existe-t-il un moyen de dire à ma procédure d'effectuer le travail avec le type de collate que je veux ?

    Merci,

    Évans

  9. #9
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Plus facile est de recréer la base avec la même collation que sur le premier serveur.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/03/2010, 00h52
  2. [ADO][D7][ACESS][SQL SERVER] Erreur inconnue
    Par aityahia dans le forum Bases de données
    Réponses: 10
    Dernier message: 09/04/2007, 13h05
  3. Réponses: 3
    Dernier message: 29/03/2007, 16h05
  4. [SQL Server]Erreur d'insertion dans la DB
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h55
  5. [DTS sql server] Erreur lors de l'insertion de trop de ligne
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/07/2005, 22h44

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