La validation de schéma XML Vous pouvez fusionner deux fichiers pureQueryXML
ou plus contenant des instructions SQL qui ont été capturées à partir d'une application et exécutées dans une source de données unique. XML
peut être effectuée au niveau des fichiers pureQueryXML en entrée
et les instructions SQL non utilisées peuvent être supprimées depuis le fichier de sortie
fusionné.
Cette rubrique
contient les sections suivantes :
Présentation
Vous pouvez fusionner les
fichiers pureQueryXML de deux façons.
- Utilisez un fichier pureQueryXML
comme fichier de base si vous souhaitez que le fichier issu de la fusion conserve
les ensembles d'instructions provenant de ce fichier. Les instructions SQL provenant des autres fichiers
de la fusion sont placées dans un ensemble d'instructions sans nom créé par pureQuery
à la fin du fichier obtenu.
Vous pouvez par exemple capturer des instructions SQL à partir d'une application
dans un fichier appelé capture.pdqxml. Modifiez ce fichier pour organiser les instructions
SQL qu'il contient en ensembles d'instructions, soit manuellement
soit à l'aide de l'utilitaire Configure. Le fichier capture.pdqxml devient
le fichier de base lors de l'utilisation de l'utilitaire Merge.
Recommandation : IBM® vous recommande fortement d'éditer les fichiers
pureQueryXML en utilisant uniquement le plan de travail. Si vous éditez un fichier
pureQueryXML en dehors du plan de travail, vous risquez de rendre le ficher inutilisable.
Si vous êtes dans l'obligation d'éditer un fichier pureQueryXML en dehors du plan de travail,
dans la balise <statementSet> du jeu d'instruction à modifier, définissez la valeur de l'attribut
configureStatus sur REQUIRED, comme suit : configureStatus="REQUIRED". Puis, exécutez l'utilitaire Configure sur le fichier.
Un ensemble d'instructions dans un fichier QueryXML constitue la base d'un ou quatre packages(s) DB2, selon que vous vouliez un package pour un niveau d'isolation ou un package pour chacun des quatre niveaux d'isolation.
Vous pouvez exécuter l'utilitaire Configure sur capture.pdqxml, de sorte qu'il puisse nommer les
ensembles d'instructions. Ensuite, vous donnez une copie de ce fichier aux autres
membres de votre équipe pour leur permettre de capturer les instructions de manière incrémentielle
à partir d'autres chemins logiques de la même application. Chaque membre utilise sa copie
comme fichier d'entrée, en le spécifiant comme valeur de la propriété pureQueryXml. Chaque membre
attribue le nom du fichier contenant les instructions SQL supplémentaires qu'il capture à la propriété
outputPureQueryXml.
Ces membres de l'équipe vous donnent leurs fichiers de sortie, sur lesquels vous exécutez l'utilitaire
Merge afin de créer un fichier contenant les instructions SQL provenant des fichiers ayant
participé à la fusion. Si vous ouvrez le nouveau fichier, vous pouvez constater qu'il contient toujours
les ensembles d'instructions qui se trouvaient dans le fichier de base. Les instructions SQL provenant des
fichiers de sortie que les membres de votre équipe vous ont donnés se trouvent dans un nouvel ensemble
d'instructions sans nom placé à la fin du nouveau fichier.
- Vous pouvez fusionner au moins deux fichiers pureQueryXML
sans spécifier l'un d'eux comme fichier de base.
Dans le fichier issu de la fusion,
l'utilitaire Merge combine les instructions SQL provenant de tous les fichiers pureQueryXML en
un seul ensemble d'instructions sans nom.
Remarque : Si l'option
-baseFile n'est pas spécifié, le premier fichier
de la liste des fichiers pureQueryXML est utilisé comme fichier de base. Il ne peut pas s'agir d'un fichier pureQueryXML
créé pour capturer des instructions SQL supplémentaires lorsque
les propriétés outputPureQueryXml et pureQueryXML sont
spécifiées. Lorsque les deux propriétés sont spécifiées, le fichier outputPureQueryXml
contient des instructions SQL capturées qui n'apparaissent pas dans le fichier pureQueryXML file
spécifié par la propriété pureQueryXML.
Notes sur le processus de fusion
Les notes suivantes
portent sur le processus de fusion :
- Lors de la fusion de fichiers, les fichiers peuvent contenir la même instruction SQL
avec différents attributs. La liste suivante explique comment l'utilitaire Merge
gère les instructions SQL identiques avec différents attributs.
Les descriptions supposent que STMT_A et STMT_B sont des instructions SQL identiques
et que STMT_A se trouve dans le fichier de base et STMT_B dans un fichier fusionné
dans le fichier de base :
- Si l'attribut parameterType de STMT_A est défini sur SINGLE_ROW_PARAMETERS
et l'attribut de STMT_B sur MULTI_ROW_PARAMETERS, l'attribut
de STMT_A est défini sur MULTI_ROW_PARAMETERS.
- Si l'attribut allowStaticRowsetCursors de STMT_A est défini sur
false et l'attribut de STMT_B sur true, l'attribut de
STMT_A est défini sur true.
- Si l'attribut isBindable de STMT_A est défini sur
true et l'attribut de STMT_B sur false, l'attribut de
STMT_A est défini sur false.
- Si un curseur défini par l'utilisateur n'est pas défini pour STMT_A mais qu'il est défini
pour STMT_B, le nom de curseur dans STMT_A correspond à celui défini dans
STMT_B.
Su les valeurs d'attribut de STMT_A et STMT_B sont inversées,
la valeur d'attribut de STMT_A reste inchangée et un message est consigné
dans le fichier journal.
De plus, si deux instructions de fichiers pureQueryXML différents sont identiques à tous égards,
sauf leurs entrées de trace de pile, les entrées de trace de pile différentes sont combinées pour l'instruction unique qui en résulte
dans le fichier issu de la fusion.
- Si le fichier issu de la fusion contient des ensembles d'instructions sans nom, vous devez exécuter
l'utilitaire Configure sur ce fichier avant d'exécuter l'utilitaire StaticBinder.
- IBM vous recommande vivement
d'exécuter l'utilitaire Configure après avoir fusionné les fichiers de sorte que les résultats
de la fusion puissent être utilisés avec l'utilitaire StaticBinder.
Syntaxe de la commande de fusion

(1)
>>-------java com.ibm.pdq.tools.Merge--------------------------->
>--+---------------------+-------------------------------------->
'- -baseFile--fichier-'
.---------.
V |
>--+- -inputPureQueryXml----fichier-+--+------------------------>
'- -inputPureQueryXmlGroup--fichier-'
>-- -outputPureQueryXml--fichier-------------------------------->
>--+--------------------------+--+--------------------------+--->
| (2) | | .-FALSE-. |
'-| options de trace |-----' '- -showDetails--+-TRUE--+-'
>--+---------------------------------------+-------------------->
'- -removeSQLInactiveForDays----jours---'
>--+--------------------------+--+--------+--------------------><
| .-FALSE-. | '- -help-'
'- -validateXml--+-TRUE--+-'
Remarques:
- Vous pouvez spécifier les options dans n'importe quel ordre.
- Pour la syntaxe, voir la description de ces options.
Pour
comprendre les conventions utilisées dans le diagramme, voir Lecture des diagrammes de syntaxe.
Descriptions des options
- -baseFile fichier
- Indique le fichier pureQuery contenant les ensembles d'instructions que vous souhaitez conserver
dans le fichier créé par l'utilitaire Merge, le cas échéant. Vous devez exécuter l'utilitaire Configure sur ce fichier avant d'exécuter l'utilitaire Merge.
Si une instruction SQL de l'un des fichiers que vous fusionnez procède à des mises à jour
positionnées, et que l'instruction qui déclare le curseur de ce type de mise à jour ne se trouve
pas dans le même fichier, l'utilitaire Merge recherche la déclaration du curseur dans les fichiers que
vous fusionnez.
Par exemple, supposons que vous ayez capturé des instructions SQL
issues d'une application Web groupée, puis généré les trois fichiers pureQueryXML A, B et C.
Vous utilisez le fichier C comme fichier de base pour le processus de fusion. Le fichier A contient
l'instruction SQL S1, qui procède à une mise à jour positionnée. Toutefois, le fichier A ne contient
pas d'instruction SQL S2, qui déclare le curseur qu'utilise S1. Par conséquent, l'utilitaire Merge
recherche dans les fichiers B et C une instruction SQL qui déclare ce curseur. Si le fichier B ou C ne
contient pas ce type d'instruction, l'utilitaire Merge ne fusionne pas l'instruction de mise à jour positionnée S1 et consigne un avertissement.
Si vous ne spécifiez pas de fichier de base, dans le fichier issu de la fusion, l'utilitaire Merge
combine les instructions SQL provenant de tous les fichiers pureQueryXML en un seul ensemble d'instructions sans
nom.
Remarque : Si vous ne
spécifiez pas de fichier de base, le premier fichier en entrée pureQueryXML répertorié
est considéré comme étant le fichier de base par défaut. Il ne peut pas s'agir d'un fichier pureQueryXML
créé pour capturer des instructions SQL supplémentaires lorsque
les propriétés outputPureQueryXml et pureQueryXML sont
spécifiées. Lorsque les deux propriétés sont spécifiées, le fichier outputPureQueryXml
contient des instructions SQL capturées qui n'apparaissent pas dans le fichier pureQueryXML file
spécifié par la propriété pureQueryXML.
- -inputPureQueryXml fichier
- Indique les fichiers pureQueryXML à fusionner, leurs noms étant séparés par des espaces. Vous pouvez
spécifier plusieurs chemins absolus ou relatifs. Si vous spécifiez un chemin relatif,
il doit l'être par rapport au répertoire dans lequel vous exécutez la commande.
- Si le chemin ou le nom d'un fichier contient un espace, placez l'entrée du fichier entre guillemets.
- -inputPureQueryXmlGroup fichier
- Indique les fichiers pureQueryXML à fusionner. Le fichier doit porter
l'extension .grp. Vous pouvez spécifier un nom de fichier sur chaque ligne du fichier,
en associant chacun à un chemin absolu ou relatif. Si vous spécifiez un chemin relatif,
il doit l'être par rapport au répertoire dans lequel vous exécutez la commande.
- Si le chemin ou le nom d'un fichier contient un espace, il n'est pas utile de placer l'entrée du
fichier entre guillemets.
- -outputPureQueryXml fichier
- Indique le nom du nouveau fichier que l'utilitaire Merge va créer à partir des fichiers
pureQueryXML que vous indiquez dans les options précédentes. Vous pouvez spécifier un chemin absolu ou relatif. Si vous spécifiez un chemin relatif,
il doit l'être par rapport au répertoire dans lequel vous exécutez la commande.
- -removeSQLInactiveForDays jours
- Indique le nombre de jours qui doit s'écouler avant qu'une instruction SQL non utilisée
soit supprimée, sur la base de l'horodatage de l'instruction. Si la variable jours
est définie sur 0, toutes les instructions SQL sont écrites dans le fichier de sortie. Par défaut,
toutes les instructions SQL sont écrites dans le fichier de sortie. Si la
variable jours est définie sur un nombre positif, l'utilitaire Merge
n'écrit pas d'instructions SQL dans le fichier de sortie si leur dernière utilisation
remonte au nombre de jours indiqué par la variable à compter de la date
du jour ou si elle est antérieure. Si la variable jours est
définie sur 1, les instructions SQL ne sont pas écrites si leur dernière utilisation date du jour précédent
ou est antérieure.
Par exemple, si la variable jours est
définie sur 5 et que nous sommes le 25 novembre, les instructions SQL
datées du 20 novembre et antérieures au 20 novembre ne sont pas écrites.
Si
l'instruction SQL n'est pas horodatée, elle est
écrite dans le fichier de sortie et horodatée selon l'heure et la date
du jour. Par exemple, si une version antérieure d'un fichier pureQueryXML
n'est autre qu'un fichier en entrée, l'instruction SQL n'est pas horodatée. En cas
de version précédente d'un fichier pureQueryXML (version 3 ou antérieure), l'option
est ignorée, toutes les instructions SQL sont écrites dans le fichier de sortie
avec l'heure et la date du jour et un message s'affiche.
Si le statut de l'ensemble
d'instructions est défini sur FINAL, les instructions remplissant les
critères en termes de nombre de jours d'inactivité sont écrites dans le fichier de sortie pureQueryXML
et l'utilitaire Merge consigne un message dans le fichier journal
concernant l'instruction et la raison pour laquelle elle est conservée.
Un message est consigné dans le fichier journal
pour les instructions SQL qui ne sont pas écrites dans le fichier de sortie
pureQueryXML. Si l'option -showDetails est définie sur true,
toutes les instructions non écrites dans le fichier de sortie
s'affichent.
Remarque : Les instructions SQL ne sont pas
écrites dans le fichier de sortie pureQueryXml, mais elles ne sont pas
supprimées des packages DB2
préalablement liés à l'ensemble d'instructions. Les futures opérations de liaison
effectuées à l'aide de l'ensemble d'instructions ne permettront pas de lier les instructions SQL supprimées,
mais peuvent laisser une section vide dans le package. Pour supprimer les
sections vides, il est possible d'appliquer l'option -cleanConfigure au fichier
pureQueryXML à l'aide de l'utilitaire Configure. Utilisez alors l'utilitaire StaticBinder pour créer
et lier des packages depuis le fichier pureQueryXML.
- -showDetails TRUE|FALSE
- Indique si l'utilitaire Merge doit afficher un récapitulatif de ses activités.
- La valeur par défaut est FALSE.
- options de trace
- Vous pouvez demander à ce que le fichier journalise les messages et préciser le niveau
d'information à journaliser.

>>-+--------------------------+--------------------------------->
'- -traceFile--nom_fichier-'
>--+---------------------------+-------------------------------><
| .-OFF-----. |
'- -traceLevel--+-ALL-----+-'
+-SEVERE--+
+-WARNING-+
+-INFO----+
+-CONFIG--+
+-FINE----+
+-FINER---+
'-FINEST--'
- -traceFile nom_fichier
- Indique le chemin absolu ou relatif ainsi que le nom du fichier à utiliser pour la journalisation des informations
relatives à l'opération.
- Si le fichier existe déjà, pureQuery ajoute les nouveaux messages à la suite des messages déjà placés dans ce fichier. Par défaut, les entrées sont
écrites dans System.err.
- -traceLevel OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|ALL
- Indique le type d'informations à journaliser. Le niveau par défaut est OFF. Si vous ne spécifiez pas de fichier dans lequel écrire les entrées de journal et que vous associez cette option à une valeur autre qu'OFF, les entrées sont écrites dans System.err.
- -validateXml TRUE|FALSE
- Indique si la validation de schéma XML est effectuée dans les fichiers
pureQueryXML en entrée à l'aide du schéma pureQueryXML. Si la valeur est définie sur
TRUE, la validation est effectuée. Si la valeur est définie sur FALSE ou si l'option
n'est pas définie, la validation n'est pas effectuée. La valeur par défaut est FALSE.
En cas d'échec de la validation de schéma
par un fichier pureQueryXML, la fusion échoue. Le nom de fichier et l'erreur à l'origine de l'échec de la validation
de schéma sont indiqués. Les fichiers suivants ne peuvent pas être validés.
La première erreur de validation est rapportée, ainsi que l'échec de la fusion.
Seule l'édition actuelle
ou la version précédente des fichiers pureQueryXML est validée (version
4 ou 3). En cas de détection d'une version antérieure du fichier pureQueryXML, la validation
n'est pas appliquée à ce fichier.
- -help
- Affiche un récapitulatif des informations d'utilisation.