Aplicar ingeniería

Al aplicar cambios de ingeniería, asegúrese de comprobar si en el DDL hay objetos derivados de otros objetos, como por ejemplo las vistas, las tablas de consultas materializadas y los alias, para asegurarse de que se resuelven los objetos dependientes correctos.
Síntomas
DB2 almacena las sentencias CREATE para algunos objetos derivados en el catálogo exactamente como se han especificado. Si el creador de estas sentencias no especificó los nombres de esquema, se presupone el inicio de sesión actual. Es posible que la sentencia CREATE falle si el inicio de sesión actual es diferente durante el proceso de aplicar ingeniería.
Resolución del problema
Para resolver este problema utilice el mismo ID de creador al cambiar objetos, especifique completamente los objetos dependientes en el DDL, o añada la sintaxis SET CURRENT SCHEMA antes del mandato.

Por ejemplo, si genera un mandato CREATE VIEW como CREATE VIEW MYSCHEMA.VIEW AS SELECT * FROM MYTABLE; y MYTABLE realmente pertenece a un esquema denominado DB2, cuando se despliegue el mandato, DB2 busca MYTABLE bajo el nombre de inicio de sesión actual. Es posible que obtenga un error que indique que loginname.MYTABLE no está definido. Si añade una sentencia SET CURRENT SCHEMA=DB2 delante de la sintaxis de CREATE VIEW MYSCHEMA.VIEW AS SELECT * FROM MYTABLE, la totalidad de los objetos referenciados se resolverá correctamente.

Cuando IBM® Data Studio esté calculando el orden correcto para las sentencias CREATE de los objetos derivados que contengan nombres de otros objetos derivados sin nombres de esquema calificados al completo, es posible que IBM Data Studio ponga dichas sentencias en un orden incorrecto. Para corregir este problema es posible que tenga que:
  • Asegúrese de que el inicio de sesión que se utilice para generar los mandatos de cambio es el mismo que el inicio de sesión que se utilizó para crear objetos de base de datos.
  • Abra los mandatos generados en el Editor SQL y XQuery y coloque las sentencias en orden correcto.

Comentarios