Ingénierie directe

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é.

Commentaires