J'ai une tâche de flux de données SSIS avec un composant de destination OLE DB qui insère des enregistrements dans une table avec un déclencheur. Lorsque j'exécute une instruction INSERT
normale sur cette table, le déclencheur se déclenche. Lorsque j'insère des enregistrements via la tâche SSIS, le déclencheur ne se déclenche pas.
Comment puis-je déclencher le déclenchement dans SSIS?
Étant donné que la tâche de destination OLE DB utilise une insertion en bloc, les déclencheurs ne sont pas déclenchés par défaut. De BULK INSERT (MSDN) :
Si FIRE_TRIGGERS n'est pas spécifié, aucun déclencheur d'insertion n'est exécuté.
Il faut spécifier manuellement FIRE_TRIGGERS dans le composant OLE DB via son éditeur avancé.
Ajoutez ensuite "FIRE_TRIGGERS" à la valeur de FastLoadOptions (notez que les options sont séparées par une virgule):
Avec cette option en place, les déclencheurs doivent se déclencher pendant l'exécution de la tâche.
complément de la réponse de ladenedge.
Étant donné que la tâche de destination OLE DB utilise une insertion en bloc, les déclencheurs ne sont pas déclenchés
c'est le cas lorsque l'option "chargement rapide" est sélectionnée.
Si vous le modifiez en un mode d'accès aux données "table ou vue" normal, vos déclencheurs doivent se déclencher normalement car l'insertion est effectuée ligne par ligne.
Vous pouvez le faire sans utiliser l'outil de données SQL Server pour Visual Studio en modifiant le fichier dtsx avec le bloc-notes (ou tout autre éditeur de texte).
Rechercher la propriété suivante:
<property
dataType="System.String"
description="Specifies options to be used with fast load. Applies only
if fast load is turned on."
name="FastLoadOptions">
TABLOCK,CHECK_CONSTRAINTS
</property>
et ajoutez la valeur FIRE_TRIGGERS comme Diego déjà décrite.