0 votes

Transactions SSIS - Grands ensembles d'enregistrements

Je me demande comment SSIS traite les transactions avec de grands ensembles de données. J'ai un "grand" ensemble de données d'environ 150 000 lignes, dont chacune doit être validée par rapport à des règles de gestion dans le cadre d'un ETL d'une base de données de transit vers la base de données active.

Si l'un des enregistrements ne respecte pas les règles de gestion, aucun enregistrement ne doit se retrouver dans la base de données active (c'est-à-dire que la transaction doit être annulée).

Ma question est de savoir comment SSIS gère les transactions importantes - ou le peut-il ? Peut-il gérer la saisie de 149 999 enregistrements, puis revenir en arrière si le dernier enregistrement ne satisfait pas aux règles d'absence de busiless ? Ou existe-t-il une meilleure pratique pour effectuer ce type d'opération de transfert de données volumineuses ?

Mon idée actuelle est de traiter chaque enregistrement dans un conteneur de séquence au niveau du flux de contrôle, avec les paramètres de transcation activés sur le conteneur. Toutes les validations seront effectuées dans le conteneur de séquence, et l'insertion sera également effectuée dans ce conteneur.

2voto

Dane Points 429

SSIS peut gérer les transactions de manière raisonnable. Là où il échoue, c'est lorsqu'il s'agit d'effectuer des transactions sur plusieurs bases de données ou serveurs à l'aide de MSDTC (cela fonctionne toujours, mais il y a quelques réserves).

Vous pouvez définir l'option TransactionOption de la tâche de flux de données comme étant requise. Cela obligera SSIS à l'inscrire dans une transaction. De même, vous pouvez mettre la TransactionOption des autres tâches à NotSupported (par exemple, mettre à jour la table d'état pour qu'elle échoue si elle échoue).

Vous ne pouvez pas réellement traiter chaque enregistrement dans un conteneur de séquence (à moins que vous ne boucliez plusieurs fois sur une tâche de flux de données, ce qui n'est probablement pas la meilleure solution). Au lieu de cela, je mettrais le flux de données à la transactionoption requise, et puis il devrait échouer la tâche si des enregistrements échouent dans votre flux de données et rollback la transaction entière.

0voto

nullptr Points 1652

Je suis d'accord avec Dane, SSIS et SQL Server ne devraient pas avoir de problèmes avec ce nombre de transactions, à condition qu'il y ait une infrastructure appropriée pour le supporter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X