Gibt es mehr SSIS-Packages als Entwickler, die sie noch durchschauen?
Hunderte .dtsx-Packages, eines pro Tabelle, jedes in Visual Studio gebaut von dem, der gerade das Ticket hatte, mit Control-Flows und Data-Flows, die sich nur einzeln öffnen lassen. Um eine Spalte zu ergänzen, müssen Sie die Packages eines nach dem anderen öffnen. Die Lösung ist kein Package-Template, sondern ein Modell, das die Loads generiert, nativ auf SQL Server, Azure SQL oder Fabric.
Kommt Ihnen das bekannt vor?
- Für eine neue Quellspalte müssen Sie in Visual Studio jedes Package einzeln öffnen, das die Tabelle berührt.
- Es gibt ein Package pro Tabelle, und die, die vor den Projektparametern gebaut wurden, tragen weiterhin ihre eigenen Connection-Strings.
- Niemand ist sicher, welche Packages noch eingeplant sind, und niemand löscht eines, um es herauszufinden.
- Audit-Spalten zum Warehouse hinzuzufügen wurde in Wochen geschätzt, weil es dieselbe Bearbeitung in Hunderten Data-Flows ist.
SSIS war zwei Jahrzehnte lang die richtige Antwort für SQL Server Warehouses, und ein gewachsener Bestand zeigt das: Hunderte Packages, gebaut von vielen Händen über viele Jahre, jedes einzeln in Visual Studio zu öffnen. Die Packages laufen noch. Sie zu ändern ist das Problem.
Warum der Bestand schwer zu ändern ist
- Ein Package pro Tabelle, jedes ein handgebautes Unikat. Derselbe Control Flow und Data Flow, für jede Quelle neu erstellt, im Stil dessen, der in der Woche das Ticket hatte.
- Alt-Packages tragen ihre Konfiguration noch selbst. Projektparameter und geteilte Connection Manager gibt es seit 2012; geerbte Packages, die davor oder ohne sie gebaut wurden, halten weiterhin Connection-Strings und Pfade in sich.
- Eine Schema-Änderung bedeutet, jedes betroffene Package einzeln zu öffnen. Um eine Spalte im Warehouse zu ergänzen, müssen Sie jedes Package öffnen, das sie berührt. Die Schätzung ist in Wochen, weil die Bearbeitung in Hunderten Data-Flows steckt.
- Eine breitere Spalte ist ein gebrochener Data Flow. Data-Flow-Metadaten sind typisiert und zur Entwurfszeit fixiert, eine Quellspalte, die wächst oder den Typ ändert, lässt die Komponente also scheitern, bis jemand sie in Visual Studio neu mappt.
- Es fehlt die Übersicht über den Produktivbestand. Packages werden aus dem SQL-Agent, aus der SSISDB und aus anderen Packages eingeplant, und niemand will derjenige sein, der das falsche gelöscht hat.
Das ist kein Designfehler von SSIS. Ein Package ist ein guter Weg, einen Load zu bauen, und ein schlechter Weg, ein Warehouse zu halten.
Wo die Struktur hingehört
- In ein zentrales Modell statt in einzelne Packages. Business-Keys, Beziehungen und Attribute einmal deklariert, mit den Loads daraus abgeleitet.
- Generiert, damit jeder Load eine Form hat. Kein Stil pro Entwickler, kein Package, das nur sein Autor lesen kann.
- Auf der Plattform, die Sie bereits betreiben. SQL Server und Azure SQL sind erstklassige Ziele, und Fabric ist da, wenn der Umzug kommt.
Was sich mit Datavault Builder ändert
Datavault Builder hält das Warehouse in einem visuellen Modell und generiert daraus die Staging, Historisierungs- und Auslieferungs-Loads, nativ für SQL Server, Azure SQL und Fabric.
- Das Package pro Tabelle verschwindet. Hubs, Links, Satelliten und ihre Loads werden aus dem Modell generiert. Es gibt nichts, was in Visual Studio zu öffnen wäre.
- Eine neue Spalte ist ein Mapping-Update. Mappen, neu generieren, und jede abhängige Struktur wird konsistent aktualisiert. Fehlende Spalten werden als Null mit Warnung geladen; wachsende Spalten werden verbreitert.
- Jeder Load hat dieselbe Form. Der Generator schreibt sie, es gibt also keine Stil-Drift und kein Package, das nur sein Autor versteht.
- Das Modell ist das Inventar. Was geladen wird, woher, wohin, mit Lineage, ist an einem Ort sichtbar. Kein Suchen durch SQL-Agent-Jobs.
- Ihre bestehende Infrastruktur bleibt erhalten. Das generierte Warehouse läuft dort, wo die Packages liefen, und zieht als Zielwechsel nach Fabric um, wenn Sie das entscheiden.
Was zu entscheiden ist
Analysieren Sie Ihren Paketbestand und zählen Sie die Packages, die nur existieren, um eine Tabelle aus einer Quelle ins Staging oder ins Warehouse zu laden. Diese Zahl zeigt, wie groß der Anteil ist, den ein Modell generieren sollte. Nach Quelle sortiert ergibt dieselbe Liste die Reihenfolge, in der Sie die Packages ablösen können.
Erleben Sie es live mit Ihren eigenen Datenquellen
Buchen Sie eine kostenlose Demo und bringen Sie den Connector mit, der Sie am meisten kostet, an Geld oder an Zeit.
In drei Schritten zu einer Pipeline, die Sie kontrollieren
-
Die Packages zählen, die nur eine Tabelle laden
Der Großteil eines gewachsenen SSIS Bestands ist ein Package pro Quelltabelle, das dasselbe tut. Das ist Struktur, nicht Logik.
-
Stattdessen die Quellen modellieren
Business-Keys, Beziehungen und Attribute kommen ins Datavault Builder Modell. Die Loads werden generiert, nativ auf SQL Server, Azure SQL oder Fabric.
-
Packages per Mapping stilllegen
Jede im Modell gemappte Quelle ist ein Package, das nicht mehr geöffnet werden muss. Der Bestand schrumpft, während das Modell wächst.
Wie Datavault Builder die Reibungsverluste in der Ingestion beseitigt
-
Ingestion ist eingebaut
Batch-, Delta- und CDC-Ladevorgänge aus Datenbanken, Dateien, REST-APIs, NoSQL und Python-Quellen, mit Streams wie Kafka, die als Micro-Batches ankommen. Dieselbe Plattform, die das Warehouse generiert, keine zweite Rechnung.
-
Ihr Schema, nicht das des Anbieters
Quelltabellen werden auf ein Data-Vault-2.0-Modell gemappt, das Sie entworfen haben. Eine neue Spalte oder eine umbenannte Tabelle ändert ein Mapping, keine Kette von Skripten nach dem Load.
-
Nur Deltas bewegen sich
Hubs, Links und Satelliten laden, was sich geändert hat. Vollständige Ladevorgänge bleiben im Staging, statt jede Nacht weiter unten neu verarbeitet zu werden.
-
Historie wird von Haus aus behalten
Jede Änderung wird so festgehalten, wie sie eintrifft. Historien- und Stichtagsabfragen funktionieren also auch dort, wo die Quelle ihre eigenen Zeilen überschreibt.
-
Code, den Sie nie von Hand schreiben
Laden, Historisierung und Lineage werden in Echtzeit aus dem Modell generiert und laufen nativ auf Snowflake, Databricks, BigQuery, SQL Server, Fabric, Oracle oder PostgreSQL.
-
Eine Plattform, bis zu neun Tools weniger
Modellierung, ETL, CI/CD, Dokumentation und Lineage an einem Ort. Das ist es, was 14,7 Minuten von der Anforderung bis zur Produktion möglich macht.
Sprechen Sie mit unserem Experten
Zwanzig Minuten mit unserem Sales Director und eine ehrliche Antwort, ob das zu Ihrem Stack passt.
Matt Collett
Sales Director
Perfekt, wählen Sie einen passenden Termin:
Weitere Probleme in dieser Serie
-
SSIS-Schwachstellen: Warum das Verlagern der Packages in die Cloud nur die Altlasten mitnimmt
SSIS-Altlasten haben drei Probleme, die eine Cloud-VM nicht löst: ein Package pro Tabelle, das niemand öffnen will, Releases, die DevOps nicht erreicht, und ein Design, das bei SQL Server aufhört. Die Azure-SSIS Integration Runtime trägt alle drei unverändert in die Cloud. Ein Modell, das das Warehouse generiert, macht sie stattdessen überflüssig.
-
Stößt SSIS dort an seine Grenzen, wo Ihr Cloud-Warehouse beginnt?
SSIS wurde gebaut, um Daten zwischen On-Premises SQL Server Instanzen zu bewegen. Wenn das Warehouse nach Fabric, Snowflake, Databricks oder BigQuery umzieht, sind die Optionen, die Packages auf eine Azure-SSIS Integration Runtime zu heben, Drittanbieter-Connectoren zu kaufen oder neu zu schreiben. Ein Modell, das nativ für die neue Plattform generiert, ist die vierte Option, und die einzige, die Ihre Altlasten nicht mitschleppt.
-
Ist SSIS der letzte Teil Ihres Stacks, der sich CI/CD verwehrt?
Eine .dtsx Datei ist XML, das sich schlecht vergleichen und noch schlechter mergen lässt, arbeiten zwei Engineers an einem Package, endet das im Neuaufbau. Umgebungen leben in von Hand gepflegten SSISDB-Variablen-Mappings. Moderne DevOps-Praxis stößt beim SSIS-Projekt an ihre Grenzen. Releases sollten aus einem Modell generiert werden, pro Umgebung, mit dem Rollback inklusive.
Fragen und Antworten
- Nein. Datavault Builder generiert das Warehouse nativ für SQL Server und Azure SQL, und für Fabric, wenn Sie umziehen. Das ETL modernisiert sich, ohne dass die Plattform es müsste.
- Es beseitigt das Zeichnen, und das ist ein echter Fortschritt. Was es hinterlässt, ist der Bestand: BIML erzeugt .dtsx-Packages, es gibt also weiterhin Hunderte davon, die auf einem SSIS-Server deployt, eingeplant, gemerged und ausgeführt werden müssen. Der Unterschied ist, mengenbasierte Loads zu generieren, die aus einem Modell heraus in der Datenbank laufen, sodass es gar keine Packages gibt.
- Sie laufen weiter, bis ihre Quelle im Modell gemappt ist, dann werden sie stillgelegt. Es gibt keinen Big-Bang; der Bestand schrumpft ein Mapping nach dem anderen.
- Geschäftsregeln wandern in den Business Vault, wo sie versioniert und im Modell sichtbar sind. Die Ladelogik, die den Großteil eines typischen Package ausmacht, wird generiert und nie wieder geschrieben.