DB2 - Connectivité - Informations complémentaires
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 :
- 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).
- 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.
- 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.
- 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.
- 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.
- Il est important de configurer DB2 Connect correctement, comme
suit :
- 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.
- Suivez les procédures d'installation et de configuration décrites
dans les manuels correspondants.
- 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 :
- 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.
- 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).
- 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é.
- 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é.
- 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.
- 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é.
- Pour définir les accès des utilitaires DB2 Connect à tout serveur DB2
AS/400, procédez comme suit :
-
CONNECT TO nom-bdd-éloignée
-
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.
|
-
CONNECT RESET
- Pour permettre la transmission d'instructions SQL interactives de DB2
Universal Database pour AS/400 à DB2 pour OS/2, procédez comme
suit :
- 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).
- 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.
- 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.
- 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 :
-
GRANT ALL PRIVILEGES ON TABLE nom-table TO utilisateur
-
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.
- 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.
- 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.)
- 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).
- 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.
- 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 ]