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.