Controllo dell'esecuzione dei trigger durante l'importazione di massa di dati

Un trigger è un particolare tipo di stored procedure che viene eseguito automaticamente quando un utente modifica i dati di una tabella o di una vista. L'esecuzione dei trigger può influire sulle prestazioni di un'operazione di importazione di massa. Ad esempio, se un trigger invia un messaggio di posta elettronica ogni volta che viene importato un record, è possibile che la velocità di un'importazione di massa venga ridotta e che venga creato un numero eccessivo di messaggi.

È possibile controllare l'esecuzione (attivazione) dei trigger per le importazioni di massa di dati. Un'importazione di massa dovrebbe eseguire unicamente i trigger relativi a una tabella con trigger INSERT e INSTEAD OF che supportano l'inserimento di più righe. Per ulteriori informazioni su questi trigger, vedere Trigger DML.

ms187640.note(it-it,SQL.90).gifImportante:
Se i trigger sono disattivati, per aggiornare i metadati è possibile utilizzare un blocco di modifica dello schema, che può tuttavia interferire con gli altri comandi, ad esempio la creazione di un indice in linea, o con le transazioni. Ad esempio, una transazione di isolamento dello snapshot che accede alla tabella di destinazione potrebbe non riuscire a causa di modifiche simultanee a DLL.

Se i trigger sono attivati, vengono eseguiti una volta per ogni batch.

Durante un'importazione di massa, il funzionamento varia a seconda del comando utilizzato per l'operazione. Per impostazione predefinita, il comando bcp e l'istruzione (Transact-SQL) BULK INSERT disattivano i trigger. L'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...), invece, esegue i trigger per impostazione predefinita.

Nella tabella seguente viene riepilogato il funzionamento predefinito.

Comando per l'importazione di massa Funzionamento predefinito

bcp

Disattivazione dei trigger

BULK INSERT

Disattivazione dei trigger

INSERT ... SELECT * FROM OPENROWSET(BULK...).

Esecuzione dei trigger

Ognuno dei comandi per l'importazione di massa fornisce un qualificatore che consente di modificare la modalità di gestione dei trigger, come descritto nelle sezioni seguenti.

Esecuzione di trigger con bcp o BULK INSERT

Per impostazione predefinita, il comando bcp e l'istruzione BULK INSERT non eseguono trigger. È tuttavia possibile attivare i trigger tramite i qualificatori seguenti:

Comando Qualificatore Tipo di qualificatore

bcp

-h"FIRE_TRIGGERS"

Hint

BULK INSERT

FIRE_TRIGGERS

Argomento

Se per un'importazione di massa viene specificato FIRE_TRIGGERS, eseguirà tutti i trigger INSERT e INSTEAD OF definiti nella tabella per tutte le righe inserite nella tabella.

Per ulteriori informazioni, vedere Utilità bcp e BULK INSERT (Transact-SQL).

Disattivazione di trigger in INSERT ... SELECT * FROM OPENROWSET(BULK...).

Per impostazione predefinita, il provider di set di righe con lettura di massa OPENROWSET esegue i trigger. È possibile disattivare i trigger tramite il qualificatore seguente:

Comando Qualificatore Tipo di qualificatore

INSERT ... SELECT * FROM OPENROWSET(BULK...).

WITH(IGNORE_TRIGGERS)

Hint di tabella

Se viene specificato questo hint, i trigger non vengono eseguiti dal provider di set di righe con lettura di massa OPENROWSET. Per ulteriori informazioni sull'hint IGNORE_TRIGGERS, vedere table_hint (Transact-SQL).

Importazione di batch di grandi dimensioni con i trigger attivati

SQL Server 2005 utilizza il controllo delle versioni delle righe per i trigger e memorizza le versioni delle righe nell'archivio delle versioni in tempdb. Prima che sia possibile eseguire l'importazione di massa di un batch di record di dati di grandi dimensioni utilizzando i trigger, potrebbe essere necessario aumentare le dimensioni di tempdb per adeguarsi all'impatto dei trigger sull'archivio delle versioni. Per ulteriori informazioni, vedere Utilizzo delle risorse di controllo delle versioni delle righe.

Vedere anche

Altre risorse

Utilità bcp
Bulk Copy Functions
BulkCopy Object
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Performing Bulk Copy Operations (ODBC)
table_hint (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005