Transactions multiples

Il est possible qu'un package inclue des transactions non liées entre elles dans un package Integration Services. Chaque fois qu'un conteneur, au milieu d'une hiérarchie de conteneurs imbriquée, ne prend pas en charge les transactions, les conteneurs au-dessus et au-dessous de lui dans la hiérarchie démarrent des transactions distinctes s'ils sont configurés pour prendre en charge les transactions. Les transactions sont validées ou annulées dans l'ordre, de la tâche la plus imbriquée dans la hiérarchie de conteneurs jusqu'au package. Cependant, si une transaction interne est validée, elle n'est pas annulée si une transaction externe est abandonnée.

Par exemple, un package comprend un conteneur de séquences qui contient deux conteneurs de boucles Foreach, et chaque conteneur comprend deux tâches d'exécution de requêtes SQL. Le conteneur de séquences et les tâches d'exécution de requêtes SQL prennent en charge les transactions, contrairement aux conteneurs de boucles Foreach. Dans cet exemple, chaque tâche d'exécution de requêtes SQL démarre sa propre transaction et elle n'est pas annulée si la transaction de la tâche de séquence est abandonnée.

Les propriétés TransactionOption du conteneur de séquences, du conteneur de boucle Foreach et des tâches d'exécution de requêtes SQL sont définies comme suit :

  • La propriété TransactionOption du conteneur de séquences a pour valeur Required.

  • Les propriétés TransactionOption des conteneurs de boucles Foreach ont pour valeur NotSupported.

  • Les propriétés TransactionOption des tâches d'exécution de requêtes SQL ont pour valeur Required.

Le diagramme ci-dessous représente les cinq transactions non liées du package. Une transaction est démarrée par le conteneur de séquences et les quatre autres par les tâches d'exécution de requêtes SQL.

Implémentation de plusieurs transactions