DB2 - Connectivité - Informations complémentaires

Informations complémentaires sur les opérations SQL

Le présent chapitre fournit des informations supplémentaires sur les opérations SQL entre DB2 Universal Database pour AS/400 et DB2 Common Server version 2 ou DB2 Universal Database version 5. Il fournit également des informations sur les opérations SQL entre DB2 Universal Database pour AS/400 et DB2 pour OS/2 mais, en règle générale, ces indications s'appliquent également à DB2 Common Server version 2 et DB2 Universal Database version 5 sur d'autres plateformes, comme suit :

  1. Sur l'AS/400, les noms de table sont qualifiés par une collection (ou par un nom de bibliothèque) et ils résident dans la base de données DB2 Universal Database pour AS/400 (une par système AS/400). Cependant, sur le PC, une table est qualifiée par l'ID utilisateur qui l'a créée et elle réside dans une base de données particulière (ou dans plusieurs, dans le cas de DB2 pour OS/2).
    1. Cela implique que toute requête envoyée de DB2 pour OS/2 (via DB2 Connect) vers DB2 Universal Database pour AS/400 mentionne l'ID utilisateur du travail cible (qui s'effectue sur l'AS/400) en tant que nom (par défaut) de la collection, si celui-ci ne figure pas dans le nom de la table recherchée. Soyez donc attentif, faute de quoi la table ne pourra être localisée.
    2. Cela implique également que toute requête émise par DB2 Universal Database pour AS/400 vers DB2 pour OS/2 doit être associée à un qualifiant de table implicite, si celui-ci n'est pas explicité dans la requête (au format "qualifiant.nom-table"). Le qualifiant de table pour OS/2 (indiqué en tant que collection ou bibliothèque par le demandeur d'application AS/400) prend par défaut l'ID de l'utilisateur à l'origine de la requête. Là encore, vous devez être attentif, faute de quoi la table ne pourra être localisée.
    3. Vous pouvez attribuer un ID utilisateur commun aux bases de données et tables DB2 pour OS/2 que vous créez. En effet, contrairement à DB2 Universal Database pour AS/400, DB2 pour OS/2 ne comporte pas de collections physiques, mais simplement un qualifiant de table, correspondant à l'ID de l'utilisateur qui crée la base de données.
  2. DB2 Connect (ou DDCS) est requis si DB2 pour OS/2 s'exécute comme client utilisant le protocole DRDA ; il ne l'est pas lorsqu'il sert uniquement de serveur.
  3. Il est important de configurer DB2 Connect correctement, comme suit :
    1. Assurez-vous que vous disposez des niveaux d'édition les plus récents de DB2 pour OS/2 et de DB2 Connect ; sinon, appliquez les PTF disponibles appropriées.
    2. Suivez les procédures d'installation et de configuration décrites dans les manuels correspondants.
  4. Avec APPC, veillez à configurer les communications en conséquence ; un contrôleur et une unité doivent être créés pour le PC si DB2 pour OS/2 sert de demandeur d'application ou de serveur d'applications. De plus, quel que soit le protocole de communication utilisé, le répertoire de bases de données relationnelles doit comporter une entrée pour chaque base de données DB2 pour OS/2 à laquelle un AS/400 peut se connecter.

    Pour configurer les communications APPC, procédez comme suit :

    1. Vous pouvez créer manuellement les descriptions de contrôleur et d'unité, ou bien laisser le système les créer si vous disposez d'un réseau en anneau à jeton et que la valeur *YES est indiquée au paramètre de description de ligne AUTOCRTCLT. Utilisez la commande WRKLIND (Gérer descriptions de lignes), option 2 (Modifier) pour consulter la description de ligne. Localisez le paramètre AUTOCRTCLT (Création automatique de contrôleurs) et notez la valeur qui lui est attribuée.

      Si votre système crée automatiquement les contrôleurs, vous pouvez lancer la création des descriptions de contrôleur requises. Pour ce faire, ouvrez le dossier CM/2 à partir d'OS/2, puis cliquez sur Start Communications et exécutez Subsystem Management. Notez les détails relatifs au sous-système SNA, puis aux liaisons logiques. Ouvrez la fenêtre correspondant à celles-ci afin d'activer la liaison au système sur lequel vous souhaitez créer la description de contrôleur. La description d'unité y sera automatiquement créée, ultérieurement.

    2. Sur l'AS/400, l'unité et le contrôleur associés au PC doivent être actifs pour que la liaison entre les deux systèmes puisse être établie. Si la valeur *NO est affectée au paramètre SWTDSC dans la description de contrôleur, l'état des contrôleurs actifs ne change pas. Par ailleurs, vous pouvez affecter la valeur *YES au paramètre ONLINE. Ainsi, le contrôleur sera activé à l'issue de l'IPL. (Dans ce cas, vous devrez peut-être également attribuer la valeur *YES au paramètre ONLINE également dans la description d'unité.) Pour que vous puissiez modifier des paramètres de description de contrôleur, celle-ci doit être hors fonction et la valeur *USER doit être définie pour le paramètre CTLOWN (propriétaire de contrôleur).
    3. Pour ajouter une entrée au répertoire de bases de données relationnelles pour chaque base de données DB2 pour OS/2 à laquelle un AS/400 peut se connecter, utilisez la commande ADDRDBDIRE, en indiquant le nom de la base de données DB2 pour OS/2 en tant que nom de base de données relationnelle, et le nom du poste de travail en tant que nom d'emplacement éloigné.
  5. La valeur de CCSID appropriée est requise pour les tables (fichiers physiques) sur l'AS/400 utilisé par DB2 pour OS/2. Vous pouvez visualiser la valeur de CCSID à l'aide de la commande DSPFD, et la modifier pour les fichiers physiques, à l'aide de la commande CHGPF. Pour que la connexion aboutisse, vous devrez peut-être modifier, en plus, l'un des éléments suivants : le CCSID du travail, le CCSID du profil utilisateur employé ou le CCSID du système (valeur QCCSID) si la valeur par défaut, 65535, est affectée. En règle générale, il est préférable d'apporter cette modification dans le profil utilisateur sous lequel le travail de serveur sera exécuté.
  6. Pour pouvoir utiliser DB2 Connect avec un serveur AS/400, vous devez créer des modules SQL sur l'AS/400 pour les programmes d'applications et les utilitaires DB2 Connect.
    1. Vous pouvez utiliser la commande DB2 PREP pour traiter le fichier source d'un programme d'application comportant des instructions SQL. Ce traitement génère un fichier source modifié contenant des appels de langage hôte qui correspondent aux instructions SQL. Il crée également, par défaut, un module SQL dans la base de données à laquelle vous êtes connecté.
    2. Pour définir les accès des utilitaires DB2 Connect à tout serveur DB2 AS/400, procédez comme suit :
      1.    CONNECT TO nom-bdd-éloignée
        
      2.    BIND chemin@DDCS400.LST BLOCKING ALL SQLERROR CONTINUE
                    MESSAGES DDCS400.MGS GRANT PUBLIC
        

        Remplacez chemin dans chemin@DDCS400.LST par le chemin par défaut, C:\SQLLIB\BND\, ou par votre emplacement local si le chemin par défaut n'a pas été indiqué lors de l'installation.
        Remarque :La PTF SF23624 est requise pour la version 3 édition 1 de l'OS/400. En effet, elle permet d'éviter la génération du code d'erreur SQL de type -901 à partir de la base de données DB2 Universal Database pour AS/400, au niveau du troisième fichier de liens (*.bnd) dans la liste.

      3.    CONNECT RESET
        
  7. Pour permettre la transmission d'instructions SQL interactives de DB2 Universal Database pour AS/400 à DB2 pour OS/2, procédez comme suit :
    1. Utilisez les attributs de session NAMING(*SQL), DATFMT(*ISO) et TIMFMT(*ISO). D'autres formats que *ISO peuvent être utilisés mais pas tous les formats et la valeur attribuée au format de date (DATFMT) doit également être indiquée au format d'heure (TIMFMT).
    2. Notez la correspondance entre les COLLECTIONS sur l'AS/400 et le qualifieur de table (ID de l'utilisateur ayant créé la table) pour DB2 pour OS/2. Reportez-vous à l'étape 1 ci-avant pour d'autres détails sur les opérations SQL.
    3. Lors de la toute première session interactive, vous DEVEZ également indiquer COMMIT(*CS) pour le contrôle de validation, puis (1) RELEASE ALL, (2) COMMIT et (3) CONNECT TO nomrdb (celui d'une base de données particulière). A ce stade, vous pouvez également associer la valeur PUBLIC au droit d'exécution du module QSQL400.QSQL0200 (GRANT EXECUTE ON PACKAGE QSQL400.QSQL0200 TO PUBLIC) (ou associer ce droit à des utilisateurs particuliers). Ainsi, d'autres personnes pourront utiliser ce module SQL pour transmettre des instructions SQL en interactif.
  8. Pour tout programme créé sur un AS/400 qui accède à une base de données DB2 pour OS/2, veillez à utiliser les commandes DB2 pour OS/2 suivantes :
    1.    GRANT ALL PRIVILEGES ON TABLE nom-table TO utilisateur
      
    2.    GRANT EXECUTE ON PACKAGE nom-module (généralement,
           le nom du programme AS/400) TO utilisateur
      

      Vous pouvez, si vous le souhaitez, indiquer "PUBLIC" à la place de utilisateur.

  9. Lors du développement d'applications AS/400 utilisant DB2 pour OS/2 (version 2.1.1 ou antérieure), le message SQL5057 était généré suite à la commande CRTSQLxxx pour indiquer la création d'un module SQL sur le PC, même lorsque ce module n'était pas réellement créé. Désormais, cette erreur ne se produit plus dans DB2 pour OS/2.

    Par ailleurs, dans les versions précédentes de DB2 pour OS/2, aucun module SQL n'était créé pour les programmes OS/400 dont la zone de texte de la description de membre source contenait des données.

  10. Dans DB2 pour OS/2, les procédures mémorisées en langage C ne peuvent pas utiliser les paramètres argc et argv, c'est-à-dire qu'elles ne peuvent pas être de type principal(), tandis que les procédures mémorisées sur l'AS/400 doivent utiliser ces paramètres. (Reportez-vous aux exemples de procédures mémorisées DB2 pour OS/2 dans le sous-répertoire \SQLLIB\SAMPLES ; recherchez les fichiers OUTSRV.SQC et OUTCLI.SQC dans le sous-répertoire C.)
  11. Indiquez en MAJUSCULES les noms des procédures mémorisées dans DB2 pour OS/2 et appelées par un AS/400, (qui utilise des majuscules pour ces noms). Cela signifie que tout nom de procédure indiqué en minuscules, même correctement, ne sera pas trouvé (pour l'AS/400, ces noms sont toujours en majuscules).
  12. Si vous n'appliquez pas la PTF appropriée pour les instructions SQL imbriquées, une instruction CALL d'un AS/400 vers DB2 pour OS/2 ne peut aboutir que si vous indiquez le nom de la procédure dans une variable hôte (CALL:nom-procédure-hôte(...)). La PTF requise pour la V3R7 est SF35932, et pour la V3R2, SF36535.
  13. Les procédures mémorisées sur l'AS/400 ne peuvent pas inclure une instruction COMMIT si elles sont créées pour être exécutées dans le même groupe d'activation que le programme appelant (méthode de création correcte). Aussi, bien que sur DB2 pour OS/2, une procédure mémorisée puisse inclure une instruction COMMIT, le concepteur de l'application doit tenir compte du fait que DB2 Universal Database pour AS/400 ne sera pas informé de l'exécution de l'instruction COMMIT.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]