Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les systèmes de traitement des transactions basés sur KTM doivent journaliser l’activité des transactions à l’aide du système de fichiers journaux commun (CLFS). KTM crée un flux de journal pour chaque objet du gestionnaire de transactions. Chaque gestionnaire de ressources doit créer son propre flux de journal.
Création de flux de journaux pour les objets Transaction Manager
When your resource manager calls ZwCreateTransactionManager, you must specify the name of a CLFS log stream. Si le flux spécifié n’existe pas, KTM le crée. If the stream already exists, ZwCreateTransactionManager reopens it. KTM affecte ce flux de journal à l’objet du gestionnaire de transactions.
KTM utilise le flux de journal de l’objet gestionnaire de transactions pour enregistrer des informations d’état interne sur l’objet gestionnaire de transactions et les objets suivants associés à celui-ci :
- Tous les objets Resource Manager associés
- Tous les objets de transaction associés
- Tous les objets d’inscription associés
Si les opérations transactionnelles sont interrompues avant qu’elles ne soient terminées, KTM peut utiliser les informations du journal pour déterminer s’il faut valider ou restaurer les transactions.
KTM n’enregistre pas les données de transaction reçues ou envoyées aux clients par les gestionnaires de ressources. Les gestionnaires de ressources doivent utiliser leurs propres flux de journaux pour enregistrer ces informations.
Resource managers can call ZwQueryInformationTransactionManager to get information about a transaction manager object's log stream, such as the log stream's path name or the GUID that KTM assigns to the stream.
Création de flux de journaux pour les gestionnaires de ressources
In its initialization code, each resource manager should call ClfsCreateLogFile to create its own log stream. Chaque gestionnaire de ressources doit utiliser son flux pour enregistrer toutes les informations sur les transactions dont il a besoin pour valider, restaurer ou récupérer les données de la transaction.
KTM et tous les gestionnaires de ressources d’un TPS peuvent utiliser un seul fichier journal, mais chaque composant TPS doit utiliser un flux différent dans le fichier journal. For information about how to specify individual streams within a log file, see ClfsCreateLogFile.
Periodically, KTM creates a restart area in the transaction manager's log stream. Lorsque KTM effectue une opération de récupération, il lit la dernière zone de redémarrage pour récupérer l’état des objets ouverts avant l’arrêt du système. De même, votre gestionnaire de ressources doit créer régulièrement des zones de redémarrage dans son flux de journal. Par exemple, votre gestionnaire de ressources peut créer une zone de redémarrage chaque fois qu’une opération transactionnelle est terminée.
Pour plus d’informations sur les zones de redémarrage dans les flux de journaux CLFS, consultez Lecture des enregistrements de redémarrage à partir d’un flux CLFS. Also, see the ClfsWriteRestartArea, ClfsReadRestartArea, and ClfsReadPreviousRestartArea routines.
Utilisation de flux de journaux pour la récupération
After your resource manager calls ZwCreateTransactionManager, it must call ZwRecoverTransactionManager. The ZwRecoverTransactionManager routine reads the transaction manager object's log stream to recover the state of the TPS to a known good point. Si l’ordinateur s’arrête correctement (ou ne l’arrête pas), le flux de journaux contient des informations minimales après le dernier chargement du gestionnaire de ressources. Si un incident système se produit, le flux de journaux contient suffisamment d’informations de récupération pour restaurer toutes les transactions à un état connu.
After your resource manager calls ZwCreateResourceManager, it must call ZwRecoverResourceManager. The ZwRecoverResourceManager routine tries to recover the transactions that are associated with each of the resource manager's enlistments. Pour plus d’informations sur la récupération des transactions d’un gestionnaire de ressources, consultez Gestion des opérations de récupération.
Stockage des données de transaction
Les gestionnaires de ressources qui utilisent des flux de journaux CLFS doivent stocker les données de transaction dans les zones de marshaling CLFS. CLFS déplace régulièrement les données de la zone de marshaling du flux de journaux vers un support de stockage permanent. Pour consigner une opération qui modifie les données, un gestionnaire de ressources peut effectuer les étapes suivantes :
Copiez les données d’origine, avant que l’opération d’écriture ne la modifie, dans la zone de marshaling.
Effectuez l’opération sur une copie des données sans modifier le support de stockage permanent de la base de données.
Copiez les nouvelles données dans la zone de marshaling.
Si le gestionnaire de ressources reçoit une notification de restauration, il peut restaurer les données d’origine à partir du flux de journaux. S’il reçoit une notification de validation, le gestionnaire de ressources peut copier les données modifiées du flux de journaux vers le support de stockage permanent de la base de données.
Resource managers can also use the ZwSetInformationEnlistment routine to store recovery information in an enlistment object. KTM enregistre ces informations dans son flux de journal et le lit à partir du flux de journaux pendant les opérations de récupération. Therefore, a resource manager can obtain this recovery information at any time by calling ZwQueryInformationEnlistment.