> Tech > Utiliser le contrôle de commitment

Utiliser le contrôle de commitment

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Pour utiliser le contrôle de commitment, commencez par définir l’environnement adéquat par l’une des méthodes suivantes, selon l’environnement et selon que votre application utilise SQL ou RLA:

• Exécuter une commande CL i5/OS Start Commitment Control (StrCmt Ctl).
• Spécifier le paramètre Commit approprié sur la commande

Utiliser le contrôle de commitment

CrtSqlXxx, StrSql, ou RunSqlStm
• Coder une directive de précompilateur Set Option Commit ou une instruction exécutable Set Transaction Isolation Level dans un programme en langage évolué (HLL, high level language) qui contient du SQL imbriqué.
• Spécifier une clause With isolation-level sur une instruction SQL Select, Insert, Update, Delete ou Declare Cursor.
• Définir la propriété « transaction isolation » quand vous utilisez le driver DB2Driver (natif) ou AS400JDBC Driver (boîte à outils) pour vous connecter à l’i5.
• Définir la propriété CommitMode quand vous vous connectez via ODBC.

Pour des environnements non recensés ci-dessus, recherchez une propriété ou une option avec « commit » ou « transaction » dans le nom de propriété ou le label d’option.

Dans tous les cas ci-dessus, vous devez spécifier un niveau d’isolation (isolation level) (appelé aussi « niveau de verrouillage de commit »). Tout niveau d’isolation autre que No Commit ou None commence un environnement de contrôle de commitment, si un environnement approprié n’existe pas déjà. J’expliquerai plus loin les différents niveaux d’isolation, mais voyons d’abord d’un peu plus près comment établir un environnement de contrôle de commitment.

Pour une application HLL qui n’utilise que RLA, le moyen le plus simple consiste à utiliser la commande StrCmtCtl pour établir l’environnement et une commande End Commitment Control (EndCmtCtl) pour le terminer. Il ne doit y avoir aucune transaction « uncommitted » quand vous terminez l’environnement (ou job).

Pour des programmes HLL avec du SQL imbriqué, il n’est pas nécessaire d’exécuter une commande StrCmtCtl, bien que ce soit possible. Il existe plusieurs autres solutions. Le fait de spécifier une valeur autre que *None pour le paramètre Commit sur la commande CrtSqlXxx ou la directive de précompilateur Set Option Commit, amène le programme compilé à s’exécuter sous un environnement de contrôle de commitment et à commencer un nouvel environnement si nécessaire. Il faut coder l’instruction Set Option avant toute autre instruction HLL ou SQL.

Vous pouvez aussi utiliser l’instruction SQL Set Transaction pour établir (ou terminer) un environnement de contrôle de commitment et/ou pour changer le niveau d’isolation pendant l’exécution du programme. L’instruction a la syntaxe

Set Transaction Isolation Level isolation-level

Si un programme exécute une instruction Set Transaction Isolation Level None, il met fin au contrôle de commitment. L’instruction Set Transaction Isolation Level appelle quelques autres considérations.

Pour des programmes triggers
• L’instruction Set Isolation Level peut être utilisée n’importe où, mais il faut normalement l’exécuter au début du programme trigger.
• Le niveau d’isolation spécifié ne dure que jusqu’à la prochaine instruction Commit ou Rollback ou jusqu’à ce que le programme trigger retourne.

Pour des programmes non triggers
• L’instruction Set Isolation Level ne peut être exécutée qu’au début d’une transaction.
• Le niveau d’isolation spécifié ne dure que jusqu’à la prochaine transaction (par exemple l’instruction Commit ou Rollback suivante).

Pour changer dynamiquement le niveau d’isolation d’une instruction individuelle, vous pouvez spécifier une clause With isolation-level sur les instructions Select, Insert, Update et Delete, comme dans l’exemple suivant :

Update Customer Set Discount = Discount + 0.001 Where Discount Is Not Null With CS

Le niveau d’isolation appliqué à une instruction individuelle ne survit pas à celle-ci. Ce niveau s’applique indépendamment de toute valeur spécifiée sur le paramètre Commit d’une commande, une instruction Set Option Commit, ou une instruction Set Transaction Isolation Level.

Vous pouvez aussi utiliser une clause With isolation-level sur une instruction Declare Cursor, et le niveau d’isolation ne s’applique qu’aux tables atteintes via le curseur et dure pendant que les tables sont ouvertes. Déterminer quel environnement de contrôle de commitment est utilisé Un journal peut avoir plusieurs environnements de contrôle de commitment, dont

• Un environnement de contrôle de commitment job-level
• Un environnement de contrôle de commitment activation group-level pour chaque groupe d’activation • des environnements de contrôle de commitment nommés explicitement
• des environnements de contrôle de commitment limités à certaines transactions

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010