|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Bonjour,
Nous avons 4 IASP tous les 4 contenant la même librairie 'MYLIB' (ce qui est le but de nos IASP: 4 environnements de développement indépendants). Avec un GO SAVE 21 ils sont tous sauvés sur la tape. Comment faire, lors d'un restore pour choisir sur la tape la librairie 'MYLIB' d'un IASP en particulier? En faisant DSPTAP on voit les 4 numéros de séquence des 4 sauvetage de 'MYLIB', et on "devine" qu'elles sont dans "l'ordre" des IASP, mais y a-t-il un moyen plus sûr, par exemple en utilisant le nom ou le numéro de l'IASP dans un des paramètres de la comande de restore? Merci, Fred P.S. le paramètre à utiliser pour indiquer l'IASP ou on veut faire le restore lui on l'a bien trouvé |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
Bonjour.
Avec RSTLIB tu as deux paramètres : - SEQNBR = N° séquence sur la bande - RSTASP = N° ASP de restauration. Ces paramètres se retrouvent dans d'autres commandes de restauration. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Je pense qu'il faut BRMS pour connaître l'iASP d'origine.
Ce qui est certain, Lorsqu'on fait une sauvegarde complète (option 21) ou des données utilisateur (option 23), les iASPs sont sauvegardés par ordre alphabétique. En le sachant, c'est plus facile pour restaurer. |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : novembre 2008 Messages : 149 ![]() |
Bonjour,
nous avons rencontré le problème et notre façon de le résoudre a été des plus simples : Il suffit de creer un objet dans chaque bibliothèque qui donne le nom de l'environnemt pa exemple une datara (APRD) (ADEV) (ARCT) ou alors chaque environnement a ces bibliothèques propres EXPLOITDEV EXPLOITPRD EXPLOITRCT EXPLOIxxx. cela implique lors de la restore de rechercher le premier objet de la bibliothèque ou un type d'objet particulier, mais après la restore est simple.. cordialement |
|
|
00
|
|
|
#5 | |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Citation:
Tiens 2 mots sur la raison de l'existence de la même librairie dans différents iASP, pourquoi nous ne développons pas (plus) sur DTEST, DDEV, DQUALIF, DPROD, ... mais que ce sont les iASP qui jouent ce rôle avec le même nom de librairie: c'est parce que tous nos programmes sont des SQL stored procedures. Dans ces procedures les statements SQL sont statiques non qualifiés => cela permet de les compiler dans une lib au choix, mais une fois compilés ils sont qualifiés (PRTSQLINF le montre). Et donc cela ne marche pas de restaurer l'environnement de prod en test si le nom de la librairie change. Le problème existe aussi avec les vues: si on restaure la librairie X comme Y, les vues de X sont restaurées dans Y mais pointant sur les tables de X... ce qui n'est pas ce qu'on veut. Bref pour simplifier tout cela: le même nom de librairie dans chaque environnement (test1, test2, qualif, ...) mais séparer par iASP. Du coup ma question du backup/restore. |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
@frfancha
Dans ton CREATE PROCEDURE s'il s'agit d'un RPGLE, tu mets directement EXTERNAL NAME MONPROG (sans quotes, guillemets, et bibliothèque) au lieu de EXTERNAL NAME 'MABIB/MONPROG' ainsi, il utilisera la *LIBL, tu veux le voir en interrogeant SYSPROCS |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
|
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Intéressant, mais comment ca marche?
Prenons librairie A et B. Nous avons ODBC A avec "default SQL library"=A et ODBC B avec "default SQL library"=B. Soit la stored procedure: create testproc(in ini int, inout inoutn) language sql begin select n into inoutn from testtable where i = ini; end; Pour le moment on compile testproc dans A et une autre fois dans B. Connection ODBC vers A, appel (non qualifié!) de testproc => on lit la table a.testtable Connection ODBC vers B, appel (non qualifié!) de testproc => on lit la table b.testtable. Comme je l'ai dit ce qui ne fonctionne pas dans ce scénario c'est restore de a.testproc comme b.testproc au lieu de recompile en b, car alors connecté à odbc b et call de b.testproc on lit la table a.testtable. Je ne vois pas très bien comment arranger ce scénario avec *CURLIB? |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Oulaaaaa... il ne faut pas confondre l'appel de la procédure et l'accès aux données dans la procédure.
Quand tu créés ta procédure, utilises-tu la convention *SQL ou *SYS ? Car si tu utilises *SYS il va rechercher automatiquement les données dans la *LIBL !!!!! En ce qui concerne une vue, c'est normal qu'elle pointe toujours vers sa (ou ses) table(s) comme le ferait un index. Sur l'IBM i une vue ou un index sont représentés comme des fichiers logiques. |
|
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Citation:
Citation:
Le tout tourne sur i5, mais le but est d'être indépendant de cette machine et d'avoir uniquement du code qui compile tel quel (ou presque) sur DB2 linux/windows ou autre pour être indépendant du choix de la machine. |
||
|
|
00
|
|
|
#12 | ||||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
A propos de la CURLIB.
Il faut que tu aies au moins 3 bibliothèques :
Tu ne qualifies rien dans les PS. Le nom des bibliothèques ne doit apparaître nulle part dans le code. Quand tu crées ou compiles les PS, mets d'abord la bibliothèque des PS dans la CURLIB de ton travail et compiles avec l'option NAMING(*SYS) : Les PS seront alors créées dans cette bibliothèque. Au niveau du client (ce que tu appelles "Connection ODBC"), tu vas alors jouer de nouveau sur la *CURLIB. Par exemple, si tu veux exécuter les PS avec la bibliothèque de production en ligne, tu fais, en amont et avant tout accés aux PS, au niveau de ce que tu appelles "Connection ODBC", Code :
CHGCURLIB CURLIB(Biblio de production) Code :
NB : si tu es appelé à modifier/tester une PS, il faut évidemment mettre la PS à tester dans une bibliothèque placée entre la CURLIB et la bibliothèque des PS : Code :
|
||||
|
|
00
|
|
|
#13 | |||||||||
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Citation:
Citation:
Citation:
Ce n'est pas seulement une appellation, les applications utilisateurs sont des écrans windows qui se connecte via ODBC. Citation:
C'est ce que les développeurs font tous les jours ;-) Citation:
|
|||||||||
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Citation:
Par quel moyen exécutes-tu tes scripts ? |
|
|
|
00
|
|
|
#15 | |||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Citation:
Citation:
et choisis l'option de naming *SYS, pas *SQL. Citation:
NB : un petit script VB ferait sans doute mieux l'affaire pour établir la chaîne de connexion ODBC et pouvoir jouer plus commodément sur la liste des bibliothèques. |
|||
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Desole, cela va peut etre vous sembler bizarre mais nous voulons du code indépendant de l'i5, qui tourne tel quel (ou quasi moyenant des changements syntaxiques minimes realisables automatiquement), donc pas d'utilisation de *SYS ici, seulement *SQL.
Fred |
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Celà n'a rien à voir avec la façon de coder ! et ça ne remet pas en cause les standards. Bref, alors courage avec tes iASPs
|
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Mais justement, toutes les procédures stockées sont TOTALEMENT INDEPENDANTES de la plate-forme et de l'OS sur lesquels elles tournent.
Leur code ne contient aucun nom de bibliothèque. Le fait de jouer sur la convention de dénomination *SYS et sur la liste des bibliothèques est fonction de l'OS sur lequel elles tournent mais cela n'altère en rien leur code ou leur intégrité. A priori, ces mêmes procédures tourneraient aussi bien sur par ex. LUW telles qu'elles sont écrites. De surcroît, imposer une dénomination *SQL est pire car, tu l'as dit toi-même, les scripts SQL sont alors automatiquement qualifiés et c'est ce que tu ne veux pas. Alors ? |
|
|
00
|
|
|
#19 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Ben si énormément. Puisque dans les autres DB les concepts de library list et curlib n'existent pas, il est exclu de baser le design là-dessus.
Sinon pour les iASP jusqu'à présent cela fonctionne parfaitement, cela nous permet d'avoir plusieurs environnements complètement identiques (y compris libl et curlib ;-) ) et de passer de l'un à l'autre sans soucis, et d'avoir plusieurs développements en parallèle dans chacun des iASP. La seule chose qu'on ne peut pas faire c'est tester des PTF's dans un iASP et pas dans l'autre, mais bon les iASP sont sur la machine de test et elle est là pour cela. D'ailleurs samedi c'est le grand jour! Mise en prod de nos 2 nouveaux 720 (1 de test/dev, 1 de prod)! Au fond si quelqu'un est intéressé par un 520 et un 800... Et merci à tous pour l'aide apportée sur ce forum. Fred |
|
|
00
|
|
|
#20 | |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 76 ![]() |
Citation:
Migration pednant laquelle un seul changement fut nécessaire: en DB2 windows c'était: create procedure truc ( ...params... ) specific truc language sql begin ... et en DB i5 il faut (en tout cas en V5R2 à l'époque) inverser specific et language: create procedure truc ( ...params... ) language sql specific truc begin ... Et dans cette migration les applications ODBC qui tournaient vers DB2 Windows ont tourné telle quelle sans aucune adaptation/recompilation vers l'i5 (sans ajouter de concept tel que curlib ou autre). Fred |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com