Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2007, 17h31   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 28
Points : 0
Points : 0
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.
kei-kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2007, 07h03   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2007, 07h48   #3
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Je viens de faire un petit test, et pour moi le comportement est cohérent:
Code :
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 :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 12h39   #4
Invité de passage
 
Inscription : novembre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 28
Points : 0
Points : 0
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
kei-kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 13h35   #5
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
"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 :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 16h55   #6
Invité de passage
 
Inscription : novembre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 28
Points : 0
Points : 0
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 ???
kei-kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 07h38   #7
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
On peut positionner ce paramètre via
Code :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 11h42   #8
Invité de passage
 
Inscription : novembre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 28
Points : 0
Points : 0
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
kei-kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 13h36   #9
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 13h44   #10
Invité de passage
 
Inscription : novembre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 28
Points : 0
Points : 0
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.
kei-kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 09h48   #11
Invité de passage
 
Inscription : novembre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 28
Points : 0
Points : 0
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.
kei-kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 10h16   #12
Membre Expert
 
Inscription : juin 2007
Messages : 1 056
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 056
Points : 1 078
Points : 1 078
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.
kagemaru est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h22.


 
 
 
 
Partenaires

Hébergement Web