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