SQL 2005 Bulk Inserts - Änderungen im Verhalten

Bei der Analyse eines Kundenproblems mit Bulk Insert bin ich auf ein paar interessante Neuerungen gestoßen.

Grundlegend misstraut SQL Server 2005 allen Daten, die aus externen Quellen kommen. Das gilt insbesondere für alle Bulk Load Arten(wie RPC/DQ, BCP und BULK INSERT). Im Gegensatz zu SQL Server 2000 wird sichergestellt, dass nie korrupte oder ungültige Daten in Datentypen wie float, numeric/decimal oder unicode-Strings geladen werden. Der Vorteil ist, dass "schlechte" Daten eher auffallen. Der Nachteil natürlich, dass diese Prüfungen CPU-Zeit kosten. Daher sind sie abschaltbar über das Trace Flag 4808. Die Unterschiede sind nicht groß, in meinen Tests ergaben sich für das Laden von 1 Mio Zeilen in eine einfache Tabelle 9,7 statt 10,5 Sekunden.

Nicht abschaltbar sind einige zusätzliche physikalische Konsistenzchecks, die die gültigkeit eines eingehenden Bulk Load Streams testen.

Gruß,
Steffen