Pourquoi mes déclencheurs ne sont-ils pas déclenchés lors d'un insert par SSIS?

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 obtenir le déclenchement du déclencheur dans SSIS?

24
demandé sur ladenedge 2012-06-01 07:59:12

3 réponses

É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 insert en vrac (MSDN):

Si FIRE_TRIGGERS n'est pas spécifié, aucun déclencheur d'insertion ne s'exécute.

Il faut spécifier manuellement FIRE_TRIGGERS dans le cadre du composant OLE DB via son éditeur avancé.

entrez la description de l'image ici

Puis ajoutez "FIRE_TRIGGERS" à la valeur de FastLoadOptions (notez que les options sont séparés par des virgules):

entrez la description de l'image ici

Avec cette option en place, les déclencheurs doivent se déclencher pendant l'exécution de la tâche.

47
répondu ladenedge 2012-06-01 04:11:39

Complétant la réponse de ladenedge.

Étant donné que la tâche de Destination OLE DB utilise une insertion en bloc, les déclencheurs sont Non déclenché par défaut

C'est vrai lorsque vous avez sélectionné l'option" Charge Rapide".

entrez la description de l'image ici

Si vous le changez en un mode d'accès aux données "table ou vue" normal, vos déclencheurs devraient se déclencher normalement car l'insertion est effectuée ligne par ligne

15
répondu Diego 2012-06-01 08:53:13

Vous pouvez le faire sans utiliser L'outil de données SQL Server pour Visual Studio en éditant le fichier dtsx avec le bloc-notes (ou tout autre éditeur de texte).

Recherchez 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 ajouter la valeur FIRE_TRIGGERS comme Diego déjà décrit.

0
répondu Stefan 2017-01-19 13:03:14