On m’a récemment posé cette question :
j’ai 300.000 enregistrements à insérer et pour chaque insertion, les triggers doivent être exécutés
Quand on parle d’une telle volumétrie d’insertion, on pense tout de suite à de l’insertion en mode BULK. Pour ce faire, nous avons à disposition :
- un utilitaire en ligne de commande : bcp
- l’instruction T-SQL : BULK INSERT
Le problème c’est que l’insertion BULK désactive les triggers par défaut. Mais les deux méthodes proposent une option pour ré-activer les triggers.
bcp -h "FIRE_TRIGGERS"
BULK INSERT .... WITH (FIRE_TRIGGERS)
Integration Services utilise intensivement l’insertion BULK via son composant OLE DB Destination avec l’option FastLoad. Les triggers étant désactivés par défaut, il faut les réactiver dans les options avancées du composant. Dans les propriétés, il y en a une appelée FastLoadOptions qui correspond au WITH de l’instruction BULK INSERT. Il suffit juste de rajouter FIRE_TRIGGERS dans la liste (séparé par des virgules).