Controlling Constraint Checking by Bulk Import Operations
W przypadku zbiorczego importowania danych, można kontrolować, czy ograniczeń CHECK są wymuszane przez operację importu zbiorczego.A ograniczenia jest reguły biznesowej, która jest umieszczana kolumna, aby zdefiniować jego prawidłowe wartości; na przykład, ograniczenia dla kolumna zawierające rozszerzenia telefonu może wymagać postaci ####.Defining and checking constraints are the standard mechanism for enforcing data integrity.Microsoft recommends that normally you use constraint checking during an incremental bulk import.
Czasami może być konieczne jest ignorowanie ograniczeń.To przykład scenariusz jest, jeśli dane wejściowe zawiera wiersze, które naruszają ograniczenia.Przez ignoruje ograniczenia, załadowanie danych i następnie przy użyciu Transact-SQL instrukcje oczyszczania danych.
Uwaga
Jeśli zostanie zignorowany ograniczenia podczas operacji importu zbiorczego, dane, które powodują naruszenie istniejące ograniczenia mogą być wstawiane do tabela.W związku z tym ograniczenia dla tabela jest oznaczony jako is_not_trusted in the sys.check_constraints wykazu widoku (Aby uzyskać więcej informacji, zobacz temat sys.check_constraints (Transact-SQL)). W pewnym momencie należy sprawdź ograniczenia całą tabela.
Jeśli tabela została niepustą przed operacji import zbiorczy, koszt revalidating ograniczenie może przekroczyć koszt stosowanie ograniczeń typu CHECK do pierwotnych danych.Po zaimportowaniu danych powodujących problemy, należy użyć Transact-SQL Aby oczyścić importowanych danych.
Important Note: |
---|
Kiedy ograniczenia 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. |
Aby uzyskać więcej informacji na temat ograniczeń zobacz Constraints.
Podczas operacji importu zbiorczego Sprawdzanie ograniczenia zachowanie zależy od polecenia używane dla operacji.Domyślnie BCP poleceń i instrukcja BULK INSERT ignoruje ograniczenia.W przeciwieństwie do INSERT...SELECT * FROM OPENROWSET(BULK...) instrukcja, wartością domyślną jest ograniczeń check.
W poniższej tabela zestawiono domyślne zachowanie sprawdzanie ograniczenie polecenia import zbiorczy.
Polecenie |
Zachowanie domyślne |
---|---|
BCP |
Ignoruj ograniczenia |
WSTAWIANIA ZBIORCZEGO |
Ignoruj ograniczenia |
WSTAW...WYBIERZ * Z OPENROWSET(BULK...) |
Sprawdź ograniczenia |
Każde z poleceń importu zbiorczego zawiera kwalifikator, który pozwala zmienić sposób obsługi ograniczenia, jak to opisano w poniższych sekcjach.
Sprawdzanie ograniczenia bcp lub BULK INSERT
Domyślnie, ograniczenia są ignorowane podczas operacji importu zbiorczego, która jest wykonywana przez BCP polecenie lub instrukcja BULK INSERT.
The bcp command and BULK INSERT instrukcja allow you to specify that constraints are to be enforced during a bulk-import operation.Wymuszanie ograniczeń spowolnienia operacji importu zbiorczego, ale daje pewność, że wszystkie wstawione dane nie naruszenie ograniczenia, istniejące.Poniższa tabela zawiera podsumowanie kwalifikatory, można użyć do określenia wymuszania ograniczeń podczas operacji importu zbiorczego.
Polecenie |
Kwalifikator |
Typ kwalifikator |
---|---|---|
BCP |
-h"CHECK_CONSTRAINTS" |
Wskazówka |
WSTAWIANIA ZBIORCZEGO |
artcache_db_address |
Argument |
Aby uzyskać więcej informacji zobacz Narzędzie BCP i BULK INSERT (Transact-SQL).
Ignorowanie ograniczenia w INSERT...WYBIERZ * Z OPENROWSET(BULK...)
Domyślnie INSERT sprawdza ograniczenia CHECK, niemniej jednak, INSERT...SELECT * FROM OPENROWSET(BULK...) instrukcja pozwala zastąpić sprawdzania ograniczeń CHECK.Aby uzyskać informacje na temat tych ograniczeń zobacz CHECK Constraints.
Uwaga
Można wyłączyć tylko ograniczeń CHECK.Nie można wyłączyć unikatowy, klucz podstawowy, klucz obcy lub NOT NULL ograniczeń.
Poniższa tabela zawiera podsumowanie wskazówek tabeli dla bez uwzględnienia ograniczeń CHECK.
Polecenie |
Kwalifikator |
Typ kwalifikator |
---|---|---|
WSTAW...WYBIERZ * Z OPENROWSET(BULK...) |
Z (IGNORE_CONSTRAINTS) |
Wskazówka tabela |
Poniższy przykład ilustruje sposób użycia tego kwalifikator.Aby uzyskać więcej informacji na temat IGNORE_CONSTRAINTS wskazówki zobacz Wskazówki do tabela (języka Transact-SQL).
Weryfikowanie, że zostało importowanych danych
Ignoruj ograniczeń w operacji importu zbiorczego, później można zidentyfikować zaimportowanej tabela wiersze, które naruszają ograniczenia sprawdzając ręcznie importowanych danych.Aby ręcznie sprawdzić dane, możesz Transact-SQL kwerend lub procedur przechowywanych, które testują warunków ograniczenia.
Uwaga
Aby dowiedzieć się, czy tabela jest zaufany, zobacz temat is_not_trusted kolumnasys.check_constraints Służy do wyświetlania katalogu. Aby uzyskać więcej informacji zobaczsys.check_constraints (Transact-SQL).