SQL Server Integration Services 2012 bringt mit vielen anderen neuen Features auch ein neues XML-Format für SSIS-Pakete. Das mag auf den ersten Blick nicht so wichtig erscheinen, aber spätestens beim Thema “Parallele Entwicklung/Branching von SSIS-Projekten” hat das wenig lesbare Paketformat in SSIS 2005/2008 die Arbeit eines ETL-Entwicklers deutlich schwieriger gemacht.
Wenn man folgende zwei Definitionen von einem OLE DB Source Output vergleicht, sieht man klar, dass die Definition in SSIS 2012 nicht nur von BIDS/SSDT schöner formatiert ist, sondern auch weniger unnötige Informationen enthält.
OLE DB Source Output 2008
<output id="11" name="OLE DB Source Output" description="" exclusionGroup="0" synchronousInputId="0" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns> <outputColumn id="17" name="DateKey" description="" lineageId="17" precision="0" scale="0" length="0" dataType="i4" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="Conversion" errorRowDisposition="FailComponent" truncationRowDisposition="FailComponent" externalMetadataColumnId="16" mappedColumnId="0"/></outputColumns><externalMetadataColumns isUsed="True"> <externalMetadataColumn id="16" name="DateKey" description="" precision="0" scale="0" length="0" dataType="i4" codePage="0" mappedColumnId="0"/></externalMetadataColumns></output>
OLE DB Source Output 2012
<output refId="PackageData Flow TaskOLE DB Source.Outputs[OLE DB Source Output]" name="OLE DB Source Output"> <outputColumns> <outputColumn refId="PackageData Flow TaskOLE DB Source.Outputs[OLE DB Source Output].Columns[DateKey]" dataType="i4" errorOrTruncationOperation="Conversion" errorRowDisposition="FailComponent" externalMetadataColumnId="PackageData Flow TaskOLE DB Source.Outputs[OLE DB Source Output].ExternalColumns[DateKey]" lineageId="PackageData Flow TaskOLE DB Source.Outputs[OLE DB Source Output].Columns[DateKey]" name="DateKey" truncationRowDisposition="FailComponent" /> </outputColumns> <externalMetadataColumns isUsed="True"> <externalMetadataColumn refId="PackageData Flow TaskOLE DB Source.Outputs[OLE DB Source Output].ExternalColumns[DateKey]" dataType="i4" name="DateKey" /> </externalMetadataColumns>
Mit dem neuen Format wurden folgende Funktionalitäten verbessert/vereinfacht:
- Keine expliziten LineageIds, die Objekte werden mit refId (von einem Menschen lesbarer String) identifiziert => keine Fehlermeldungen “input column * has lineage ID * that was not previously used in the Data Flow task” mehr. Juhu!
- Default Werte werden nicht persistiert => Übersichtlichkeit++
- Objekteigenschaften (DTS:Property) werden als Attribute persistiert
- Attribute sind alphabetisch sortiert
- Tasks und Komponenten sind alphabetisch sortiert
- Annotationen werden im Klartext persistiert
Das neue Format ist sehr detailliert dokumentiert, was auch die Arbeit von externen Tools und Generatoren, die von außerhalb SSIS-Pakete lesen bzw. schreiben, erleichtern soll.
Ich finde es generell sehr begrüßenswert, dass die ETL-Entwicklung unter SSIS 2012 wesentlich mehr strukturiert und Best Practices-orientiert geworden ist. Ich schließe mich der Meinung von Matt Mason aus dem SSIS Team zu 100% an:
- .dtsx Dateien sind Quellcode, der lesbar und editierbar sein soll
- .ispac ist ein Kompilierungsergebnis eines SSIS-Projekt und stellt die kleinste auslieferbare Einheit dar
Es gibt aber immer noch ein paar Unschönheiten im Format, die man beseitigen kann. Hoffentlich wird Microsoft auch diese Punkte in der nächsten SSIS Version angehen:
- Layout-Informationen werden mit der eigentlichen Paketlogik in einer Datei gespeichert (MS Connect Vorschlag)
- Diverse Paketmetadaten werden zentral in der Projekt-Datei (.dtproj) gespeichert (MS Connect Vorschlag)
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen