Incorporation des transactions dans les packages
Les packages utilisent les transactions pour lier les actions de base de données que les tâches effectuent en unités atomiques, et maintiennent ce faisant l'intégrité des données. Toutes les actions de la base de données faisant partie d'une transaction étant validées ou annulées ensemble, vous pouvez vous assurer que les données restent dans un état cohérent. Par exemple, un package avec plusieurs tâches de flux de données, chacune mettant à jour et insérant des données dans une table de base de données différente, peut utiliser une transaction pour garantir que toutes les modifications effectuées dans les flux de données sont validées ou annulées. Les transactions distribuées font progresser ce concept en vous permettant de lier en une transaction unique des opérations disparates sur plusieurs systèmes d'exploitation.
Vous pouvez utiliser les transactions dans les packages pour :
Rassembler les résultats de différentes tâches en une transaction unique et assurer ainsi des mises à jour cohérentes. Par exemple, les informations sur les commandes et les lignes d'articles stockées dans deux tables différentes peuvent être téléchargées par deux tâches, qui réussissent ou qui échouent ensemble.
Assurer des mises à jour cohérentes sur plusieurs serveurs de bases de données. Par exemple, l'adresse d'un client peut être modifiée sur deux systèmes de traitement en ligne des transactions (OLTP, Online Transaction Processing) différents, dans le contexte d'une transaction unique.
Garantir des mises à jour dans un environnement asynchrone. Par exemple, un package peut utiliser une tâche de mise en attente des messages pour lire et supprimer un message comportant le nom d'un fichier à télécharger. Si la tâche de téléchargement du fichier échoue, l'opération de restauration effectuée ensuite annule les modifications de la base de données et place à nouveau le message dans la file d'attente.
Exécuter plusieurs transactions sous le contrôle d'un package unique. Par exemple, à l'aide de tâches d'exécution de packages, vous pouvez démarrer simultanément en fin de journée une séquence de transactions sur trois serveurs différents.
Tous les types de conteneurs MicrosoftIntegration Services (packages, conteneurs de boucles For et Foreach, et conteneurs de séquences, ainsi que les hôtes de tâches qui encapsulent chaque tâche) peuvent être configurés pour utiliser les transactions. Integration Services offre trois options de configuration des transactions : NotSupported, Supported et Required.
Required indique que le conteneur démarre une transaction, à moins qu'une autre transaction soit déjà démarrée par son conteneur parent. Si la transaction existe déjà, le conteneur rejoint la transaction. Par exemple, si un package non configuré pour prendre en charge les transactions inclut un conteneur de séquences utilisant l'option Required, le conteneur de séquences démarre sa propre transaction. Si le package a été configuré pour utiliser l'option Required , le conteneur de séquences rejoint la transaction du package.
Supported indique que le conteneur ne démarre pas de transaction, mais rejoint toute transaction démarrée par son conteneur parent. Par exemple, si un package avec quatre tâches d'exécution SQL démarre une transaction et que les quatre tâches utilisent l'option Supported, les mises à jour de la base de données effectuées par les tâches d'exécution SQL sont annulées en cas d'échec d'une des tâches. Si le package ne démarre pas de transaction, les quatre tâches d'exécution SQL ne sont pas liées par une transaction et aucune mise à jour de la base de données n'est annulée, sauf celle effectuée par la tâche qui a échoué.
NotSupported indique que le conteneur ne démarre pas de transaction et ne rejoint aucune transaction existante. Une transaction démarrée par un conteneur parent n'affecte pas les conteneurs enfants configurés pour ne pas prendre en charge les transactions. Par exemple, si un package est configuré pour démarrer une transaction et qu'un conteneur de boucles For dans le package utilise l'option NotSupported, aucune des tâches de la boucle For ne peut être annulée si elle échoue.
Vous pouvez configurer les transactions en définissant la propriété TransactionOption sur le conteneur. Vous pouvez définir cette propriété dans la fenêtre Propriétés de Business Intelligence Development Studio ou par programme. Pour plus d'informations, consultez Guide du développeur (Integration Services).
[!REMARQUE]
La propriété TransactionOption a un impact sur la décision d'appliquer ou non la valeur de la propriété IsolationLevel demandée par un conteneur. Pour plus d'informations, consultez la description de la propriété IsolationLevel dans la rubrique Définition des propriétés d'un package.
Pour configurer un package pour l'utilisation de transactions
Ressources externes
- Entrée de blog, How to Use Transactions in SQL Server Integration Services SSIS (en anglais), sur www.mssqltips.com
|