Lorsque vous apportez des modifications par ingénierie directe, recherchez bien dans le fichier DDL les objets dérivés d'autres objets, tels que des vues, des tables de requêtes matérialisées et des alias, pour vous assurer que les objets corrects dépendants sont résolus.
- Symptômes
- DB2 stocke
les instructions CREATE de certains objets dérivés dans le catalogue tels qu'ils ont
été spécifiés. Si le créateur de ces instructions n'a pas spécifié les noms de schéma, la connexion en cours est prise en compte par défaut. L'instruction CREATE peut échouer
si la connexion en cours a changé lors du processus de génération (ingénierie directe).
- Résolution du problème
- Pour y remédier, utilisez le même ID de créateur lorsque vous modifiez les objets,
spécifiez les objets dépendants complets dans la commande DDL ou ajoutez la syntaxe SET
CURRENT SCHEMA avant la commande.
Par exemple, si vous générez une commande CREATE VIEW de type
CREATE VIEW MYSCHEMA.VIEW AS SELECT * FROM MYTABLE; et que MYTABLE appartient en fait à un schéma
nommé DB2, lorsque cette
commande est déployée, DB2
recherche MYTABLE sous le nom de connexion en cours. Vous pouvez obtenir un message d'erreur du type nom_connexion.MYTABLE
n'est pas défini. Si vous ajoutez l'instruction SET CURRENT SCHEMA=DB2
avant la syntaxe CREATE VIEW MYSCHEMA.VIEW AS SELECT * FROM MYTABLE,
tous les objets référencés seront résolus correctement.
Lorsque
IBM® Data Studio
calcule, pour les instructions CREATE, l'ordre des objets dérivés contenant les noms d'autres objets dérivés sans
noms de schéma qualifiés complets, il peut arriver que
IBM Data Studio
classe ces instructions dans un ordre incorrect. Pour remédier à cela, vous aurez peut-être à effectuer
les opérations suivantes :
- Vérifiez que la connexion utilisée pour générer les commandes de changement
est la même que celle qui a servi à créer les objets de base de données.
- Ouvrez les commandes générées dans l'éditeur SQL et
XQuery et placez les instructions dans l'ordre approprié.