Suivi des changements apportés au registre spécial DB2 à l'aide de l'optimisation client pureQuery

Lorsque l'optimisation client pureQuery capture une instruction SQL à partir d'une application en cours d'exécution, des messages d'avertissement sont consignés dans le fichier journal lors de l'exécution d'une instruction SET qui modifie le paramètre des registres spéciaux. Les modifications apportées aux paramètres des registres spéciaux courants qui peuvent affecter les données renvoyées par une instruction SQL sont enregistrées dans le fichier pureQueryXML lors de la capture SQL.

Pour les bases de données DB2, la modification des valeurs des registres spéciaux peut voir une incidence sur le comportement de l'application. Par exemple, le registre spécial CURRENT DECFLOAT ROUNDING MODE peut avoir une incidence sur les données renvoyées par une instruction SQL. Supposons que la valeur du registre spécial corresponde à ROUND_CEILING lors de la capture d'une instruction SQL. Vous liez ensuite les instructions SQL dans le fichier pureQueryXML avec l'option de liaison qui associe le paramètre équivalent à la valeur ROUND_FLOOR. Lorsque l'application exécute les instructions SQL en mode statique, les données renvoyées peuvent être différentes si elles dépendent de la valeur du registre spécial. Les résultats peuvent être différents même si aucun changement n'a été apporté au code d'application.

Valeurs des registres spéciaux contrôlées et enregistrées par l'optimisation client pureQueryXML

Lorsque l'optimisation client pureQuery capture une instruction SQL pendant l'exécution d'une application, elle contrôle et enregistre certaines valeurs des registres spéciaux. Lors de la fusion et de la configuration des données SQL capturées, les informations des registres spéciaux enregistrées avec l'instruction SQL sont conservées avec l'instruction.

Voici ci-dessous les catégories pureQuery de registres spéciaux :

Suivis et enregistrés
Registres spéciaux contrôlés dont les valeurs sont enregistrées sous forme de données pureQueryXML. Les informations du registre spécial stockées dans le fichier pureQueryXML peuvent être utilisées lors de la configuration des fichiers pureQueryXML à l'aide de l'utilitaire Configure et sont visibles lors de l'édition d'un fichier pureQueryXML dans le plan de travail. Pour plus d'informations sur l'utilitaire Configure et sur les données visibles lors de l'édition d'un fichier pureQueryXML, reportez-vous aux liens connexes. Pour connaître les valeurs des registres spéciaux DB2 enregistrées avec l'instruction SQL dans le fichier pureQueryXML, voir Tableau 1.
Non sécurisés et non enregistrés
Valeurs des registres spéciaux qui ne sont pas enregistrées. La modification de leurs valeurs peut toutefois avoir une incidence sur le comportement des instructions SQL. Si la valeur d'un registre spécial qui n'est pas sécurisé est modifiée, pureQuery Runtime note qu'une modification a été apportée dans le fichier pureQueryXML.
Sécurisés et non enregistrés
Registres spéciaux sécurisés et non enregistrés dans le fichier pureQueryXML. En général, les modifications apportées à ces registres spéciaux n'ont pas d'incidence sur le comportement des instructions SQL. Par exemple, le registre spécial CURRENT DEGREE définit le degré de parallélisme de l'exécution des requêtes préparées en mode dynamique par le processus d'application. Autres registres spéciaux appartenant à cette catégorie : CURRENT PACKAGE PATH, CURRENT PACKAGESET, CURRENT CLIENT_ACCTNG, CURRENT CLIENT_APPLNAME, CURRENT CLIENT_USERID, CURRENT CLIENT_WRKSTNNAME, et CURRENT DEBUG MODE.
Remarque : Les registres spéciaux PACKAGE PATH et PACKAGE SET ne sont pas enregistrés, mais affectent l'exécution statique. Si le registre PACKAGE SET est utilisé, les packages statiques doivent être associés à la même catégorie COLLECTION, sinon une erreur -805 est émise au cours de l'exécution statique.

Les informations des registres spéciaux enregistrées sont stockées dans le fichier pureQueryXML sous la forme d'un ensemble de valeurs des registres spéciaux. Ces informations peuvent être utilisées pour créer des ensembles d'instructions lors de la configuration des fichiers pureQueryXML avec l'utilitaire Configure. Les informations des registres spéciaux sont visibles lorsque vous visualisez le fichier pureQueryXML dans l'éditeur pureQueryXML du plan de travail.

Vous pouvez utiliser les options -groupSQLBySpecialRegisters et -optionsFileForBind de l'utilitaire pureQuery Configure pour vous aider à exécuter des instructions SQL en mode statique. Elles peuvent être indiquées séparément ou non.

L'option -groupSQLBySpecialRegisters regroupe les instructions SQL en ensembles d'instructions en fonction des informations des registres spéciaux enregistrées lors de la capture des instructions.

L'option -optionsFileForBindcrée un fichier d'options StaticBinder. Le fichier d'options StaticBinder contient les options de liaison des ensembles d'instructions du fichier pureQueryXML. Les options de liaison reposent sur les informations des registres spéciaux enregistrées avec les instructions SQL. Le fichier contient également des commentaires avec des informations et des avertissements sur les ensembles d'instructions, les instructions SQL et les informations des registres spéciaux du fichier pureQueryXML.

Les options de l'utilitaire Configure permettent de regrouper les instructions SQL en fonction des informations des registres spéciaux et de générer un fichier d'options StaticBinder contenant les options de liaison. Les options de liaison et les autres informations du fichier vous aident à indiquer un ensemble d'options de liaison pour exécuter une instruction SQL en mode statique en obtenant un comportement comparable à celui généré avec une exécution dynamique lancée à partir de l'application. Lorsque vous avez un ensemble d'options de liaison, utilisez le programmeStaticBinder, les options et le fichier pureQueryXML pour lier les packages à une base de données.

Remarque : pureQuery Runtime version 2.2.0.3 et suivante enregistre les informations du registre spécial dans un fichier pureQueryXML. Si le fichier pureQueryXML a été créé avec une version de pureQuery Runtime antérieure à la version 2.2.0.3, vous devrez peut-être capturer une nouvelle fois les instructions pour enregistrer les informations du registre spécial.

Le tableau suivant répertorie les registres spéciaux enregistrés par pureQuery Runtime et les options de liaison associées.

Tableau 1. Registres spéciaux DB2 et options de liaison DB2associées
Registre spécial Option de définition des accès Notes
CURRENT DECFLOAT ROUNDING MODE1 ROUNDING for DB2 for z/OS et DB2 for System i.

Pas d'option de liaison pour DB2 for Linux, UNIX et Windows

L'option de liaison ROUNDING n'est pas disponible pour toutes les bases de données DB2. Les bases de données qui ne prennent pas en charge cette option de liaison génèrent un avertissement lorsqu'elle est utilisée.
CURRENT PATH FUNCPATH pour DB2 for Linux, UNIX et Windows

PATH ou FUNCPATH for DB2 for z/OS et DB2 for System i

Lors de la génération d'un fichier d'options StaticBinder, l'utilitaire Configure indique l'option de liaison FUNCPATH.
CURRENT PRECISION2 DEC La valeur du registre spécial CURRENT PRECISION peut inclure les valeurs de la précision et de l'échelle de division minimum pour les opérations de division. La valeur des options de liaison ne doit pas inclure la valeur de l'échelle de division minimum.

Lorsque vous générez un fichier d'options StaticBinder, l'utilitaire Configure émet un avertissement si la valeur d'une échelle de division minimum est détectée dans la valeur CURRENT PRECISION.

CURRENT SCHEMA3 QUALIFIER  
CURRENT SQLID3 QUALIFIER for DB2 for Linux, UNIX et DB2 for System i

Pas d'option de liaison pour DB2 for z/OS

Lors de la génération d'un fichier d'options StaticBinder, l'utilitaire Configure génère un avertissement si les valeurs des registres spéciaux CURRENT SCHEMA et CURRENT SQLID sont différentes.

Pour DB2 for z/OS, l'option de liaison OWNER peut être utilisée dans certaines situations.

Remarque :
  1. Le registre spécial est pris en charge par DB2 for z/OS version 9.1 et plus et par on DB2 for Linux Windows et UNIX version 9.5 et plus.
  2. Le registre spécial indique la précision DECIMAL. Le registre spécial est uniquement pris en charge par DB2 for z/OS. Il n'est pas pris en charge dans DB2 for Linux, UNIX et Windows et dans DB2 for System i.
  3. Dans DB2 for Linux, UNIX, et Windows et DB2 for System i, CURRENT SQLID et CURRENT SCHEMA sont utilisés en tant que synonymes.

Commentaires