services dtsx sql triggers ssis bulkinsert

sql - dtsx - ¿Por qué mis disparadores no se activan durante una inserción de SSIS?



dtsx sql server 2008 (3)

Tengo una tarea de flujo de datos SSIS con un componente de destino OLE DB que inserta registros en una tabla con un desencadenador. Cuando ejecuto una INSERT normal en esta tabla, se dispara el activador. Cuando inserto registros a través de la tarea SSIS, el disparador no se dispara.

¿Cómo puedo hacer que el disparador se dispare en SSIS?


Complementando la respuesta de la carga.

Debido a que la tarea de destino OLE DB utiliza una inserción masiva, los disparadores no se activan de forma predeterminada

eso es cierto cuando tienes la opción "carga rápida" seleccionada.

Si lo cambia a un modo de acceso a datos de "tabla o vista" regular, sus activadores deberían activarse normalmente porque la inserción se realiza fila por fila


Debido a que la tarea Destino OLE DB utiliza una inserción masiva, los activadores no se activan de forma predeterminada. Desde BULK INSERT (MSDN) :

Si no se especifica FIRE_TRIGGERS, no se ejecutan activadores de inserción.

Uno debe especificar manualmente FIRE_TRIGGERS como parte del componente OLE DB a través de su Editor avanzado.

Luego agregue "FIRE_TRIGGERS" al valor de FastLoadOptions (tenga en cuenta que las opciones están separadas por comas):

Con esa opción en su lugar, los disparadores deben activarse durante la ejecución de la tarea.


Puede hacer esto sin usar la herramienta de datos de SQL Server para Visual Studio editando el archivo dtsx con el Bloc de notas (o cualquier otro editor de texto).

Buscar la siguiente propiedad:

<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>

y agregue el valor FIRE_TRIGGERS como Diego ya describió.