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

Adaptive Server Enterprise Sybase Discussion :

[ASE 12.5.4] problème de raiserror


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut [ASE 12.5.4] problème de raiserror
    Bonjour,

    Suite à une migration de sybase ASE sur 2 environnements différents un problème se pose sur le raiserror.

    déja la différence existant entre ces deux environnements c'est que l'un est en français et l'autre en us_english.

    lorsque j'insert un message dans sysusermessages dans la version en français le language_ID est 1 et lorsque je le fais sur le US_english, le language_ID est à null.

    Cela me generais pas si sur l'environnement en français cela ne ferait pas planter mon appli. En effet sur certains postes lorsque je déclenche le message avec un raiserror, il me dit que le message n'existe pas alors que sur d'autres postes cela fonctionne.

    D'où peut provenir ce problème ?

    Merci,
    cordialement.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    A priori cela vient de la langue configurée par défaut pour le login. Je n'ai pas beaucoup joué avec les langues sous ASE, mais je suspecte qu'avoir le langid à NULL dans sysusermessages n'est probablement pas idéal.

    Je vais jeter un coup d'oeil à la doc (et sur un serveur de test) - je devrais avoir quelques infos complémentaires plus tard aujourd'hui.

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Je viens de faire un petit test, et pour moi le comportement est cohérent:
    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
     
    [mpeppler@localhost ~]$ isql -Usa -P -Slocalhost
    1> select * from sysusermessages
    2> go
     error       uid        
             description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
             langid dlevel 
     ----------- -----------
             --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
             ------ ------ 
           21234           1
             "This is a test in English"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
               NULL      0 
           21234           1
             "Ceci est un test en Français"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                  1      0 
     
    (2 rows affected)
    1> raiserror 21234
    2> go
    Msg 21234, Level 16, State 1:
    Server 'localhost', Line 1:
    "This is a test in English"
    1> set language français
    2> go
    1> raiserror 21234
    2> go
    Msg 21234, Level 16, State 1:
    Server 'localhost', Line 1:
    "Ceci est un test en Français"
    1>
    Si tu as des erreurs de type "message does not exist" c'est probablement que la langue est mal définie dans la session client. Est-ce que tu peux faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select @@language, @@langid
    dans une session où cela ne marche pas ?

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Merci pour tes réponses.

    Je vais tester immédiatement la requete que tu m'a donné.

    Il semblerait qu'il y ait encore un problème dû à cette différence de langue sur les champs datetime.
    Je m'explique quand j'insert dans un champs datetime avec pour valeur "20060706" sur certain poste pas de message d'erreur tous est OK et sur d'autres, j'ai un message d'erreur me disant qu'il ne peut insérer ce type de valeur. Il faut savoir que j'utilise sql advantage.

    Le problème pourrait venir du client alors dans ce cas non ??



    EDIT:

    alors voici le resultat de la requete :

    sur le serveur de dev en anglais :
    us_english 0

    sur le serveur de prod en français :
    french 1

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    "20060706" devrait toujours être accepté dans tous les cas, puisque c'est une forme qui n'est pas ambigue.

    Par contre 13/07/2006 pourrait poser problème, puisque dans un serveur en langue anglaise le mois est (en général) spécifié en premier (mais cela peut être modifié via SET DATEFORMAT.)

    Maintenant, tout ceci dépend en principe de la langue définie pour le client (SQL Advantage, p.ex.) - on peut vérifier le positionnement de ces paramètres via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select get_appcontext('SYS_SESSION', 'dateformat')
    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    excuse moi de ma faute. C'est bien en utilisant le type date avec les "/" que ça fonctionne pas.


    Je regarde tout de suite pour la requete que tu m'as donné. Sinon y'a t'il un moyen de changer ce paramètre de langue dans le client ??? (je n'ai pas trouvé dans les préférence).


    EDIT :

    alors après des tests sur différents postes, voici le résultat obtenue :

    Sur les poste sur lesquels la requête ne fonctionne plus ça me donne :
    serveur anglais : mdy
    serveur français : dmy

    Sur les poste sur lesquels la requête fonctionne toujours ça me donne :
    serveur anglais : mdy
    serveur français : mdy

    existe t'il un moyen d'interagir avec ces valeurs ???

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    On peut positionner ce paramètre via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set dateformat 'dmy'
    Ce paramètre se positionne aussi par défaut si l'environnement du client est dans une langue particulière, où si le compte utilisateur est configuré pour utiliser une langue particulière.

    Je suppose que les postes clients sont en Windows. Est-ce qu'il sont localisés en français ? Est-ce que l'installation du code Sybase est la même sur tous les postes?

    Il y a aussi un fichier de config de "open client" (en principe $SYBASE/OCS-12_5/config/ocs.cfg, mais il est peut-être ailleur sous Windows) qui peut être utilisé pour positionner des valeurs d'options de connexions par défaut.

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Bon allez je rajoute un petit épisode à cette série :p.

    Alors j'ai bien trouver un fichier OCS mais il s'apelle osc.dat sous windows.

    Pour tous ce qui est langage, datetype conversion etc tous est avec le parametre par défaut.
    J'ai lu dans ce meme fichier que lorsque l'option par défaut est choisi, ce fichier un fichier appellé locale.dat.

    Alors ce que j'ai fait c'est que j'ai comparé le ocs.dat et le locales.dat ils sont en tous points identique sur tous les postes.

    J'ai vérifié les options de région sous windows et pareil ils sont en tous points identiques.

    Alors d'où peut venir le fait que sur certains poste ça fonctionne alors que sur d'autre non ??

    Sinon ce que je ferai c'est que je migrerai la version anglaise en français (d'ailleur aurais tu un tuto ou quelques choses pour le faire) et je mettrais dans les client la valeur français par défaut.

    Merci encore de ton aide

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Est-ce que le "default language" des utilisateurs (dans syslogins - vérification via sp_displaylogin) est le même pour tout tes utilisateurs ?

    Sinon - pour changer le language par défaut du serveur je pense qu'il faut passer par l'utilitaire langinstall (note que je n'ai jamais fait cette procédure), et les procs sp_addlanguage et sp_modifylogin.

    Je ne suis pas sûr de comment on fait pour que le nouveau language soit le language par défaut de tous les utilisateurs (update massif de syslogins ?)

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Pour chacun de ces potes le Login mdp et le même car cette environnement est un environnement de dev donc je n'ai pas l'utilité de créer plusieurs logins différents.

    mais ç m'embete de ne pas comprendre pourquoi lorsque je fait sur un poste

    select(convert(datetime,"12/31/2006")) ça fonctionne et sur un autre non.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Rebonjour,

    Désolé de relancer le sujet mais je viens de revenir de vacance est on m'a demandé d'approfondir sur le sujet.

    Suite à une analyse il s'avère que la fonction convert peut recevoir un parametre appellée style ce qui donne la commande suivante si je veux que le resultat s'affiche correctement pour mon convert :

    select(convert(datetime,"12/31/2006"),103)

    avec cela je résoud une aprtie de mes problèmes par contre je n'arrive toujour pas à identifier pour quoi sur certain poste le select(convert(datetime,"12/31/2006")) fonctionne correctement alors que sur d'autres non. Quelqu'un aurait-il une idée d'un fichier que je n'aurai pas vu et donc pas vérifié ????


    Merci encore pour votre aide.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    c'est vraiment lié à ta config client sur le PC :

    il faut que ton client Sybase soit configuré pour utiliser la langue adéquate. Execute l'utilitaire Ocoscfg.exe (Sybase Openclient/Openserver utility)
    pour positionner le bon language. Prends comme modèle un PC pour lequel ça fonctionne.

    Tu devrais voir des variables du genre qu'il faut correctement positionner :

    LANG=enu (ou fra)

    ou la variable

    LC_ALL=enu (ou fra)

    Quel type d'application ? Client/serveur ?
    Emmanuel T.

Discussions similaires

  1. [ASE 12.5.3] Problème de suppression de bases, devices effacés du file system
    Par lsone dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 12/04/2007, 13h57
  2. [ASE 12.5.4] problème de procédure
    Par kei-kun dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 22/01/2007, 14h00
  3. [ASE 12.5.3] Problème de démarrage du moteur
    Par lsone dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 26/09/2006, 10h13
  4. [ASE 12.5.1] problème avec un load
    Par Bart1 dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 12/07/2006, 16h46
  5. [ASE][12.5.2]Problème de performance
    Par dngaya dans le forum Sybase
    Réponses: 1
    Dernier message: 16/12/2005, 11h48

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