[SSIS] SSIS Transactions : utilisation de transactions sans MSDTC

Ce billet présente comment utiliser les transactions sans avoir recours à la fonctionnalité MSDTC (Microsoft Distributed Transaction Coordinator) qui peut, parfois, ne pas être utilisable pour raisons diverses (non-installée, non-configurée, dysfonctionnelle,…).

Les configurations et tests effectués dans ce billet sont réalisés au sein de SQL Server Data Tools (SSDT), mais peuvent s’appliquer à Business Intelligence Development Studio (BIDS).

SSIS et les transactions

Pour savoir comment activer l’utilisation des transactions avec le support de MSDTC ou comprendre l’utilité des différentes options de transactions SSIS, vous pouvez aller ici.

Modus operandi d’utilisation d’implémentation d’une transaction sous SSIS sans MSDTC

Reprenons notre exemple d’utilisation d’une transaction avec SSIS abordé dans le billet [SSIS] SSIS Transactions : gestion de transactions dont voici le container des data flows utilisés (on supposera que le container (et son package) n’ont pas Required en guise d’option de transactions) :


Voici un exemple de modus operandi d’implémentation d’une transaction sous SSIS :

  • Ajout d’un composant Execute SQL Task – qu’on appellera BEGIN TRAN – avec un connecteur allant dudit composant vers le container Processing rows :


Le composant sera configuré comme suit (spécification du data source et écriture du code T-SQL du lancement d’une transaction) :


  • Ajout d’un composant Execute SQL Task pour la validation transactionnelle, et qu’on appellera COMMIT TRAN et d’un connecteur vert (indiquant un succès) allant du container vers ledit composant :


    Avec pour configuration :


  • Ajout d’un composant Execute SQL Task pour l’annulation (ou retour-arrière) d’une transaction. On l’appellera ROLLBACK TRAN et on placera un connecteur rouge (indiquant un échec) allant du container vers ledit composant :


    Et avec pour configuration :


  • Paramétrage à True de l’option RetainSameConnection au sein des propriétés du data source associé à la base de destination (dans notre cas MAC-ROG.MaBase) :



    Le but de cette option est de permettre à SSIS de n’utiliser qu’une seule connexion durant tout le traitement des opérations, au lieu d’en ouvrir une nouvelle (à chaque fin de data flow ou de container, suivant le contexte – dans notre cas, à la fin de BEGIN TRAN, puis à la fin du container et enfin, à la fin de l’un de COMMIT TRAN ou ROLLBACK TRAN). Chaque nouvelle connexion pouvant marquer une rupture transactionnelle et donc, dans notre exemple, empêcher la validation ou l’annulation de notre transaction.

L’implémentation faite, voici 2 exemples de résultats :

  • En cas de succès :


  • En cas d’erreur :


Pour aller plus loin…

Gardez un œil ici pour suivre d’autres sujets sur les transactions autour de SSIS.


Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s