Datentypen
Die Integration Services verwenden eigene Datentypen, die nicht zu 100% mit den
Datentypen des .NET-Frameworks und des SQL-Servers übereinstimmen.
Die Verwendung spezieller Datentypen ist notwendig, da ein ETL-Programm wie die
Integration Services die Kommunikation zwischen deutlich unterschiedlichen Datenwelten
ermöglicht. Um einen möglichst geringen Datenverlust zu erreichen, wird eine Vielzahl
von Datentypen zur Verfügung gestellt.
Werden Daten aus einer externen Quelle in einen Datenfluss eingelesen, werden diese
automatisch von der Quelle in einen Integration Services-Datentyp konvertiert. Anhand
der externen Metadaten wird versucht, einen möglichst optimalen Datentyp zu ermitteln.
Numerische Daten werden z.B. in einen numerischen Datentyp gespeichert, Strings
in einem Zeichendatentyp.
Auf die automatische Zuweisung des Datentyps kann bei den meisten Quellen kein Einfluss
genommen werden. Dies führt bei unstrukturierten Daten, z.B. bei Excel-Tabellen,
teilweise zu einer unerwünschten Auswahl des Datentyps. Dieses Problem kann durch
die Verwendung einer Skriptkomponente als Datenquelle umgangen werden. Jedoch muss
in diesem Fall die Schnittstelle manuell programmiert werden.
Können externe Daten nicht in einen Integration Services-Datentyp konvertiert werden,
wird eine Fehlermeldung ausgegeben. Die nachfolgende Tabelle 1 gibt einen Überblick
über die wichtigsten Integration Services-Datentypen.
|
Datentyp |
Beschreibung |
|
DT_BOOL |
Boolscher Wert |
|
DT_BYTES |
Binärer Wert mit einer variabler Länge, max. Länge von 8.000 Zeichen |
|
DT_CY |
Währungswert. Festkommazahl max. Genauigkeit von 19 Stellen davon 4 Dezimalstellen |
|
DT_DATE |
Datum mit Jahr, Monat, Tag und Stunde |
|
DT_DBDATE |
Datum mit Jahr, Monat und Tag |
|
DT_DBTIME |
Zeitstruktur / Uhrzeit mit Stunde, Minute und Sekunde |
|
DT_DBTIMESTAMP |
Datum mit Jahr, Monat, Tag, Stunde, Minute, Sekunde und dem Bruchteil der Sekunde |
|
DT_DECIMAL |
Festkommazahl max. Genauigkeit 29 Stellen. 0 bis 28 Dezimalstellen |
|
DT_FILETIME |
Anzahl der 100er-Nanosekunden seit dem 1.Januar.1601 |
|
DT_GUID |
Globaler eindeutiger Bezeichner (GUID, Globally Unique Identifier) |
|
DT_I1 |
Integerwert bis +/- 128 |
|
DT_I2 |
Integerwert bis +/- 32.768 |
|
DT_I4 |
Integerwert bis +/- 2.147.483.648 |
|
DT_I8 |
Integerwert bis +/- 9.223.372.036.854.775.808 |
|
DT_NUMERIC |
Festkommazahl max. Genauigkeit 38 Stellen. 0 bis 38 Dezimalstellen |
|
DT_R4 |
Einfache Fließkommazahl |
|
DT_R8 |
Doppelte Fließkommazahl |
|
DT_STR |
String mit max. 8.000 Zeichen |
|
DT_UI1 |
Integerwert ohne Vorzeichen bis 128 |
|
DT_UI2 |
Integerwert ohne Vorzeichen bis 32.768 |
|
DT_UI4 |
Integerwert ohne Vorzeichen bis 2.147.483.648 |
|
DT_UI8 |
Integerwert ohne Vorzeichen bis 9.223.372.036.854.775.808 |
|
DT_WSTR |
Unicode-Zeichenfolge mit einer max. Länge von 4.000 Zeichen |
|
DT_IMAGE |
Binärwert mit einer max. Größe von 2 GB |
|
DT_NTEXT |
Unicode-Zeichenfolge mit einer max. Größe von 1 GB |
|
DT_TEXT |
ANSI-Zeichenfolge mit einer max. Größe von 2 GB |
Tabelle 1: Datentypen der Integration Services Datentypen
Änderung des Datentyps
Die optimale Wahl des Datentyps kann die Performance eines Integration Services-Paketes
deutlich verbessern. Die gewählten Datentypen sollten möglichst wenig Platz verbrauchen,
damit der Hauptspeicher bestmöglichst genutzt wird und möglichst wenig ausgelagert
werden muss.
Mit den Standardkomponenten Datenkonvertierung und Abgeleitete Spalte können Spalten
mit Hilfe der Ausdrucksprogrammierung in einen anderen Datentyp konvertiert werden.
Mit einer asynchronen Skriptkomponente können Sie nicht mehr benötigte Spalten aus
dem Datenfluss entfernen und gleichzeitig eine Konvertierung durchführen.