Question

Je me demande comment traite SSIS transactions avec des grands ensembles de données. J'ai données « grandes » ensemble d'environ 150 000 lignes, dont chacun a besoin d'être validés par rapport à des règles commerciales dans le cadre d'un ETL à partir d'une base de données de mise en scène à la base de données en direct.

Si l'un des dossiers échouent leurs règles d'affaires, aucun enregistrement devrait se retrouver dans la base de données en direct (à savoir annuler la transaction).

Ma question est de savoir comment gère SSIS transactions importantes - ou peut-il? Est-il gérer la saisie des dossiers 149,999 puis faire reculer tout le lot si le dernier enregistrement échoue ses règles de busiless? Ou est-il une meilleure meilleures pratiques pour réaliser ce type de grande opération de transfert de données?

Ma pensé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'insert sera également fait dans ce conteneur.

Était-ce utile?

La solution

SSIS peut gérer les transactions raisonnablement bien. Lorsqu'il tombe est d'avoir des transactions contre plusieurs blocs de données ou les serveurs utilisant MSDTC (fonctionne toujours, mais il y a des mises en garde).

Vous pouvez régler la TransactionOption sur la tâche de flux de données à exiger. Cela forcera SSIS à l'inscrire dans une transaction. De même, vous pouvez mettre le TransactionOption d'autres tâches à NotSupported (par exemple la mise à jour table d'état à l'échec si elle échoue).

Vous ne pouvez pas traiter en fait chaque enregistrement dans un conteneur de séquence (sauf si vous en boucle sur une tâche de flux de données à plusieurs reprises qui sans doute pas la meilleure façon). Au lieu de cela, je mettrais le flux de données à TransactionOption requises, puis il devrait faire échouer la tâche si un enregistrement échouent dans votre flux de données et annuler la transaction entière.

Autres conseils

Je suis d'accord avec Dane, SSIS et le serveur SQL devrait avoir aucun problème avec ce montant des transactions condition qu'il y ait une infrastructure appropriée à l'appui.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top