Controlling Trigger Execution When Bulk Importing Data

A wyzwalacz jest specjalny formularz procedura przechowywana, która jest wykonywana automatycznie, gdy użytkownik zmienia dane w tabela lub widoku.Wykonywanie Wyzwalacze mogą mieć wpływ na wydajność operacji import zbiorczy.Na przykład wyzwalacz, który wysyła wiadomość e-mail, ilekroć jest importowany rekord zmniejsza szybkość zbiorczej operacji importu i tworzy dziesiątki wiadomości e-mail.

W przypadku zbiorczego importowania danych, można kontrolować, czy wyzwalacze są wykonywane)uruchamiany) przez operację importu zbiorczego.Należy operacji importu zbiorczego wykonać wyzwalaczy tylko dla tabela, INSERT, a z wyzwalaczy, które obsługują wiele wstawia wiersz.Aby uzyskać więcej informacji na temat tych wyzwalaczy zobacz DML Triggers.

Important noteImportant Note:

Jeżeli wyzwalacze są wyłączone, schemat zmodyfikować blokada może zostać podjęte w celu aktualizacji metadane.To może kolidować z innymi poleceń (takich jak kompilacja indeksu online) lub transakcji.Na przykład migawka izolacji transakcji dostęp do tabela miejsce docelowe może zakończyć się niepowodzeniem z powodu równoczesnych zmian DDL.

Jeśli włączone są wyzwalacze, są one wykonywane jeden raz dla każdej serii.

Podczas operacji importu zbiorczego zachowanie zależy od polecenia używane dla operacji.Domyślnie BCP polecenie i ( INSERT BULKTransact-SQL) instrukcja wyłączenia wyzwalacza. W przeciwieństwie do INSERT...SELECT * FROM OPENROWSET(BULK...) instrukcja, wartością domyślną jest wykonać wyzwalaczy.

W następującej tabela podsumowano zachowania domyślnego.

Polecenie import zbiorczy

Zachowanie domyślne

BCP

Wyłącz wyzwalaczy

WSTAWIANIA ZBIORCZEGO

Wyłącz wyzwalaczy

WSTAW...WYBIERZ * Z OPENROWSET(BULK...)

wykonać wyzwalaczy

Każde z poleceń importu zbiorczego zawiera kwalifikator, który pozwala zmienić sposób obsługi wyzwalaczy, jak to opisano w poniższych sekcjach.

Wykonywanie wyzwalaczy bcp lub BULK INSERT

Domyślnie BCP poleceń i instrukcja BULK INSERT nie wykonywał wyzwalaczy.Jednak wyzwalacze można włączyć przy użyciu następujących kwalifikatory:

Polecenie

Kwalifikator

Typ kwalifikator

BCP

-h"FIRE_TRIGGERS"

Wskazówka

WSTAWIANIA ZBIORCZEGO

FIRE_TRIGGERS

Argument

Jeśli FIRE_TRIGGERS został określony dla operacji importu zbiorczego, wykonuje INSERT i INSTEAD Z wyzwalaczy, które są zdefiniowane w tabela dla wszystkich wierszy do tabela.

Aby uzyskać więcej informacji zobacz Narzędzie BCP i BULK INSERT (Transact-SQL).

Wyłączanie wyzwalaczy w INSERT...WYBIERZ * Z OPENROWSET(BULK...)

Domyślnie dostawca zbiorczych zestawów zestaw wierszy OPENROWSET wykonuje wyzwalaczy.Wyzwalacze można wyłączyć za pomocą następujących Kwalifikator:

Polecenie

Kwalifikator

Typ kwalifikator

WSTAW...WYBIERZ * Z OPENROWSET(BULK...)

WITH(IGNORE_TRIGGERS)

Wskazówka tabela

Jeśli ta wskazówka jest określony, wyzwalacze nie są wykonywane przez dostawca zbiorczych zestawów zestaw wierszy OPENROWSET.Aby uzyskać więcej informacji na temat IGNORE_TRIGGERS wskazówki zobacz Wskazówki do tabela (języka Transact-SQL).

Importowanie dużych instancje z wyzwalaczy włączone

SQL Server 2005 i nowszych wersja wiersza za pomocą wyzwalaczy i przechowuje wersje wiersza w magazynie wersja w tempdb.Zanim użytkownik może zbiorczej importowanie dużych partia rekordy danych za pomocą wyzwalaczy, może trzeba zwiększyć rozmiar tempdb , aby uwzględnić wpływ wyzwalaczy na magazynu wersja.Aby uzyskać więcej informacji zobaczObciążenie zasób wersji wiersza.