Steuern der Einschränkungsüberprüfung mithilfe von Massenimportvorgängen
Aktualisiert: 12. Dezember 2006
Beim Massenimport von Daten können Sie steuern, ob CHECK- und FOREIGN KEY-Einschränkungen durch den Massenimportvorgang erzwungen werden. Eine Einschränkung ist eine Geschäftsregel, die auf eine Spalte zum Zweck der Definition ihrer gültigen Werte angewendet wird. Eine Spalte für Telefondurchwahlnummern kann beispielsweise mit einer Einschränkung der Form #### belegt werden. Das Definieren und Überprüfen von Einschränkungen ist der Standardmechanismus zum Erzwingen von Datenintegrität. Microsoft empfiehlt die Einschränkungsüberprüfung während eines inkrementellen Massenimports als übliche Vorgehensweise.
Es kann vorkommen, dass Einschränkungen ignoriert werden sollen. Ein Beispielszenario bestünde aus Eingabedaten mit Zeilen, die Einschränkungen verletzen. Durch das Ignorieren der Einschränkungen können Sie die Daten laden und dann Transact-SQL-Anweisungen zum Bereinigen (Cleanup) der Daten verwenden.
Wenn die Tabelle vor dem Massenimportvorgang nicht leer war, überschreitet der Aufwand der erneuten Überprüfung möglicherweise denjenigen der Anwendung von CHECK- und FOREIGN KEY-Einschränkungen auf die inkrementellen Daten. Nach dem Importieren problematischer Daten müssen Sie Transact-SQL für den Cleanup der importierten Daten verwenden.
Wichtig: |
---|
Wenn Einschränkungen deaktiviert sind, kann für das Aktualisieren der Metadaten eine Schemaänderungssperre eingesetzt werden. Dies kann sich störend auf andere Befehle (beispielsweise einer Online-Indexerstellung) oder Transaktionen auswirken. Eine Snapshotisolierungstransaktion, die auf die Zieltabelle zugreift, kann beispielsweise wegen gleichzeitiger DDL-Änderungen einen Fehler erzeugen. |
Weitere Informationen zu Einschränkungen finden Sie unter Einschränkungen.
Während eines Massenimportvorgangs hängt das Verhalten der Einschränkungsüberprüfung von dem Befehl ab, der für den Vorgang verwendet wurde. Standardmäßig werden Einschränkungen vom bcp-Befehl und der BULK INSERT-Anweisung ignoriert. Im Gegensatz dazu werden bei einer INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung Einschränkungen überprüft.
In der folgenden Tabelle ist das standardmäßige Verhalten der Massenimportbefehle bei der Einschränkungsüberprüfung zusammengefasst.
Befehl | Standardverhalten |
---|---|
bcp |
Einschränkungen ignorieren |
BULK INSERT |
Einschränkungen ignorieren |
INSERT ... SELECT * FROM OPENROWSET(BULK...) |
Einschränkungen überprüfen |
Alle Massenimportbefehle stellen einen Qualifizierer zur Verfügung, mit dessen Hilfe die Art der Handhabung von Einschränkungen geändert werden kann. Dies wird in den folgenden Abschnitten erklärt.
Überprüfen von Einschränkungen mithilfe von bcp oder BULK INSERT
Standardmäßig werden Einschränkungen während eines Massenimportvorgangs ignoriert, der vom bcp-Befehl oder von der BULK INSERT-Anweisung ausgeführt wird.
Mithilfe des bcp-Befehls und der BULK INSERT-Anweisung können Sie angeben, dass Einschränkungen während eines Massenimportvorgangs erzwungen werden müssen. Das Erzwingen von Einschränkungen verlangsamt den Massenimportvorgang, stellt aber sicher, dass keine der eingefügten Daten irgendeine der vorhandenen Einschränkungen verletzen. In der folgenden Tabelle sind die Qualifizierer zusammengefasst, die zur Angabe der Einschränkungserzwingung während eines Massenimportvorgangs verwendet werden können.
Befehl | Qualifizierer | Qualifizierertyp |
---|---|---|
bcp |
-h"CHECK_CONSTRAINTS" |
Hinweis |
BULK INSERT |
CHECK_CONSTRAINTS |
Argument |
Weitere Informationen finden Sie unter bcp (Dienstprogramm) und BULK INSERT (Transact-SQL).
Ignorieren von Einschränkungen in INSERT ... SELECT * FROM OPENROWSET(BULK...)
Standardmäßig werden mit INSERT die CHECK- und FOREIGN KEY-Einschränkungen überprüft. Mit einer INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung können Sie jedoch die Überprüfung von CHECK- und FOREIGN KEY-Einschränkungen deaktivieren. .
Hinweis: |
---|
Die Einschränkungen UNIQUE, PRIMARY KEY und NOT NULL können nicht deaktiviert werden. |
In der folgenden Tabelle ist der Tabellenhinweis für das Ignorieren von CHECK- und FOREIGN KEY-Einschränkungen zusammengefasst.
Befehl | Qualifizierer | Qualifizierertyp |
---|---|---|
INSERT ... SELECT * FROM OPENROWSET(BULK...) |
WITH (IGNORE_CONSTRAINTS) |
Tabellenhinweis |
Das folgende Beispiel veranschaulicht die Verwendung dieses Qualifizierers. Weitere Informationen zum IGNORE_CONSTRAINTS-Hinweis finden Sie unter Tabellenhinweis (Transact-SQL).
Überprüfen auf Datenimport
Wenn Sie währen eines Massenimportvorgangs Einschränkungen ignorieren, können Daten in die Tabelle eingefügt werden, die vorhandene Einschränkungen verletzen. Aus diesem Grund wird jede ignorierte Einschränkung für die Tabelle in der sys.check_constraints- oder sys.foreign_keys-Katalogsicht mit is_not_trusted markiert. Irgendwann wird es notwendig sein, die Einschränkungen für die gesamte Tabelle zu überprüfen.
Sie können importierte Tabellenzeilen, die gegen die Einschränkungen verstoßen, identifizieren, indem Sie die importierten Daten manuell mithilfe von Transact-SQL-Abfragen oder gespeicherten Prozedurchen überprüfen, mit denen die Einschränkungsbedingungen getestet werden.
Siehe auch
Andere Ressourcen
bcp (Dienstprogramm)
BULK INSERT (Transact-SQL)
DBCC CHECKCONSTRAINTS (Transact-SQL)
INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
SELECT (Transact-SQL)
Tabellenhinweis (Transact-SQL)
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
12. Dezember 2006 |
|