Hola

para el primer problema IBM tiene publicado un documento que lo explica, no
sé si te será de ayuda
http://www-01.ibm.com/support/docview.wss?uid=nas8N1017004

El problema mucha veces es seguir utilizando mandatos tradicionales como
CRTDUPOBJ,CPYF, etc cuando ya tienes un pie en el mundo SQL. Por ejemplo,
hacer un CRTDUPOBJ duplicando integridad y triggers puede ser una muy mala
idea....

Y es un problema añadir, quitar o cambiar una restricción si el objeto está
bloqueado, yo todo esto lo controlo antes de empezar a actualizar... por
motivos evidentes. Así que si encuentras la solución... coméntalo por aquí
!!!




El 13 de septiembre de 2017, 13:09, Javier Mora <[email protected]>
escribió:

> Hola a tod@s de nuevo,
>
>
>
> estoy empezando a crear tablas de BBDD con el CREATE TABLE en lugar de
> DDS, hasta el momento no he tenido ningún problema, ¡hasta ayer!
>
>
>
> Me encuentro con dos casos que sabría resolver pero no me gusta la
> solución:
>
>
>
> 1.       Cuando creo tablas con SQL le defino dos nombres, uno largo (y
> descriptivo) para utilizar en SQL y el de sistema para poder utilizarlo con
> los mandatos CL. Todo bien salvo cuando tengo que hacer un duplicado del
> objeto en la misma biblioteca, que falla con el error CPF327E – No se
> permite un nombre alternativo para el archivo XXXXX.
>
> ¿Cómo se pueden crear duplicados (CRTDUPOBJ) de ficheros con “nombre
> alternativo” en una misma biblioteca?
>
> 2.       Nuestra BBDD tiene más de 20 años y nunca se han utilizado
> “restricciones referenciales” entre archivos. Ahora quiero utilizarlas,
> pero no es posible crear dicha tabla si las tablas referenciadas se están
> utilizando. En un entorno como el nuestro (y seguramente como cualquier
> otro) donde se utiliza el equipo las 24 horas del día por decenas de
> usuarios es complicado pararlos a todos para hacer el cambio.
>
> ¿Existe alguna forma de crear tablas con restricciones referenciales sin
> parar al personal?
>
>
>
> En un entorno tradicional de DDS estos problemas no surgían, puedes
> duplicar tantas veces como quieras un objeto en la misma biblioteca
> (cambiando el nombre) y puedes crear tantos archivos como quieras sin
> molestar al resto de personal.
>
>
>
> ¿Cómo actuáis en estos casos?
>
>
>
> Saludos y gracias por vuestros comentarios,
>
>
>
> Javier Mora
>
>
>
> *De:* [email protected] [mailto:
> [email protected]] *En nombre de *Javier Mora
> *Enviado el:* miércoles, 1 de marzo de 2017 16:48
> *Para:* 'forum.help400'
> *Asunto:* RE: Modernización - Transición SQL
>
>
>
> Gracias Alex.
>
>
>
> Soy de los que le gusta tener casi todo atado antes de dar un paso de
> estas dimensiones, pero en muchas ocasiones en muchas ocasiones esa
> necesidad lo paraliza todo, porque es casi imposible tenerlo todo
> controlado.
>
>
>
> Como ya he comentado, he leído mucha documentación sobre el tema. Aunque
> hay mucha literatura, no encuentro buenos ejemplos a lo que se plantea en
> estos textos. En muy pocos se concretan decisiones sino que es todo muy
> generalista. Aun así te ayuda a tener una visión amplia de la situación a
> la que te enfrentas.
>
>
>
> (Creo) que tengo muy claro qué hacer para migrar las bases de datos a SQL
> dejando los programas en RPG sin tocar (ni siquiera recompilar). Es de lo
> poco concreto que he encontrado.
>
>
>
> De tus comentarios me llama la atención la gestión de la integridad y de
> las restricciones, ¿las gestionáis con mandatos o con SQL?
>
>
>
> Respecto al bloque “optimista” siempre he tenido mis dudas y, desde mi
> punto de vista, es bastante complicada una solución que detecte cuándo han
> cambiado los datos leídos y qué datos.
>
>
>
> Saludos,
>
>
>
> Javier Mora
>
>
>
> *De:* [email protected] [
> mailto:[email protected]
> <[email protected]>] *En nombre de *Alex Martínez
> *Enviado el:* miércoles, 01 de marzo de 2017 15:11
> *Para:* forum.help400
> *Asunto:* Re: Modernización - Transición SQL
>
>
>
> Intento contestar de forma resumida, porque esto da para una telenovela de
> varias temporadas.... ;-)
>
>
>
> La moda de mover aplicaciones a SQL era para aprovechar las ventajas del
> motor SQE... si las aplicaciones usaban OPNQRYF te quedabas con el motor
> "tradicional" CQE... hasta que llegó la V7R2 e IBM publicó en un TR varias
> mejoras para usar el SQE con "cosas" tradicionales.... en fin.
>
>
>
> Si hay programas en RPG, lo más que puedes tener es una combinación entre
> DDS y SQL y creo que es la mejor opción (o la única). Hay varios artículos
> sobre "DDS and SQL - The Winning Combination for DB2 for i"
>
>
>
> Yo no conozco aplicaciones en RPG en que TODO los accesos a base de datos
> sean en SQL. Y te hablo de aplicaciones ya migradas a ILE hace 20 años. Si
> todavía son OPM en tu caso, el primer paso es pasar a ILE.
>
>
>
> Sobre añadir integridad a tablas: Si ya utilizas ILE, en las operaciones
> WRITE, UPDATE y DELETE nosotros empezamos a incluir una rutina GetDbErr de
> gestión de errores de integridad referencial de base de datos, aunque las
> tablas no tuvieran integridad, pero esto ya dejaba el programa preparado
> para futuras reglas de integridad.  Después al añadir reglas de restricción
> a la tablas el nombre de cada regla contenía el archivo de mensajes y el id
> de un error, por ejemplo CHGPFCST FILE(AJUT400/TABLA)
>  CST('AJUTMSGF__AJUT400___ERR0001')
>
>
>
> Nota: la rutina GetDbErr se basa en unas utilidades de Julian Monypenny
> de 1997, no recuerdo si se publicaron también en help/400
>
> http://iprodeveloper.com/site-files/iprodeveloper.com/files/
> archive/iprodeveloper.com/artarchiveimages/predec99/2462-figb.htm
>
>
>
> El mayor dolor de cabeza es realizar modificaciones de bases de datos con
> integridad y sobre todo con trigers (a veces se ha disparado un trigger
> durante un CPYF y se puede liar bien-bien)
>
>
>
> Sobre el bloqueo pesimista en SQL tal como se hace en RPG hay algo de
> literatura
>
> https://www.itjungle.com/2011/07/20/fhg072011-story02/
>
>
>
> En algunos casos el acceso a la BB/DD se externalizado en "APIs" en
> RPG-ILE para tener un modelo y controlador (MVC) que incluya reglas,
> validaciones y acceso a tablas. Esto es muy cómodo para luego externalizar
> como servicio web.
>
>
>
> me dejo temas sin contestar.... en otro rato seguimos.
>
>
>
>
>
> El 1 de marzo de 2017, 12:41, Javier Mora <[email protected]> escribió:
>
> Hola a tod@s,
>
>
>
> desde hace ya bastantes años estoy intentando modernizar nuestra BBDD pero
> nunca he podido deshacerme de las DDS y empezar a crear los archivos con
> SQL. Las razones son varias: creo que la más importante es “falta de ganas”
> y la segunda son los más de 2000 programas que tenemos escritos en OPM RPG
> y que no queremos “ni tocar”.
>
>
>
> Esta situación provoca que casi cualquier fichero nuevo o cambiado afecte
> de alguna manera a bastantes programas RPG antiguos, abortando el intento
> de modernización de inmediato. Opciones como tipos de datos como VARCHAR,
> INT, BLOB, el uso de NULOS, etc. no puedan utilizarse si no reconvertimos
> todos los programas viejos.
>
>
>
> Desde hace más de ocho años utilizamos SQL incrustado en los nuevos
> programas, procedimientos almacenados para conexiones JDBC/ODBC, funciones
> y funciones de tablas de usuario. Pero no terminamos de decidirnos.
>
>
>
> Mi intención con este correo es recabar las experiencias de los miembros
> del foro que han dado ya el paso. He leído muchísima documentación
> (Redbooks, transparencias de conferencias, artículos, etc.) en donde todo
> se ve muy bonito. Lo que busco son esas cuestiones que no se cuentan pero
> que suceden en una migración de este tipo.
>
>
>
> Por ejemplo, yo me he encontrado con varias situaciones por resolver:
>
>
>
> -          Cómo documentar las tablas de la BBDD: nuestra documentación
> son las DDS, aprovechamos el fuente para añadir los comentarios
> relacionados con el fichero o con campos concretos. ¿Separo la
> documentación del fuente que crea la tabla (CREATE TABLE)? ¿La dejo junta?
> ¿Qué herramientas existen?
>
> -          Bloqueos de registros: si codifico los nuevos programas con
> SELECT, INSTERT, UPDATE y DELETE ¿cómo gestiono los bloqueos de registro
> como lo hace CHAIN? ¿Debo renunciar al bloque por registro?
>
> -          Integridad referencial: es estupenda pero, ¿qué pasa con esos
> programas tan antiguos que pueden romper esa integridad? Nos va a tocar
> revisar los programas o esperar a que fallen para arreglarlos.
>
> -          CREATE TABLE: ¿cómo establezco valores como el número máximo
> de registros o reutilizar registros borrados? Esta sentencia SQL no dispone
> de estas opciones. ¿CHGPF?
>
> -          ¿Externalizo la E/S con la BBDD?
>
>
>
> Irán surgiendo muchas más cuestiones.
>
>
>
> Gracias a todos por vuestra paciencia y vuestras sugerencias.
>
>
>
>
>
> Javier Mora
>
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.
>
>
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.
>
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a