Transactions multiples
Il est possible qu'un package Integration Services inclue plusieurs transactions non liées entre elles. Cette situation se produit lorsqu'un package contient une hiérarchie de conteneurs imbriqués et que l'un de ces conteneurs ne prend pas en charge les transactions alors que les conteneurs restants les nécessitent. Les conteneurs imbriqués qui nécessitent des transactions démarrent leurs propres transactions. Ces transactions sont validées ou annulées dans l'ordre, de la tâche la plus imbriquée dans la hiérarchie de conteneurs imbriqués jusqu'au package. Cependant, lorsque la transaction d'un conteneur 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 chacun de ces conteneurs de boucles Foreach comprend deux tâches d'exécution SQL. Le diagramme suivant illustre cet exemple de package.
Dans cet exemple de package, les propriétés TransactionOption du conteneur de séquences, des conteneurs de boucles Foreach et des tâches d'exécution 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 SQL ont pour valeur Required.
Avec ces paramètres pour les propriétés TransactionOption, il existe cinq transactions non liées dans l'exemple de package. Le conteneur de séquences démarre une transaction et les quatre tâches d'exécution SQL démarrent chacune leur propre transaction. En outre, les transactions que les tâches d'exécution SQL démarrent ne sont pas annulées si la transaction de la tâche de séquence est abandonnée.
|