SQL Server Integration Services
Von den Grundlagen bis zu Scale Out & Azure Data Factory – alles auf einer Seite
📘 SSIS Tutorial – Grundlagen
SQL Server Integration Services (SSIS) ist eine ETL-Plattform (Extract, Transform, Load) von Microsoft. Mit SSIS erstellen Sie Datenintegrations- und Transformationslösungen – z.B. Import von CSV-Dateien, Bereinigung von Daten, Laden von Data Warehouses.
Hauptkomponenten
- Control Flow – Steuert den Ablauf von Tasks (z.B. Datei kopieren, SQL ausführen).
- Data Flow – Extrahiert, transformiert und lädt Daten zwischen Quellen und Zielen.
- Connection Manager – Verwaltet Verbindungen (Datenbanken, Dateien, Cloud).
- Event Handler – Reagiert auf Laufzeitereignisse (Fehler, Warnungen).
- Parameter & Variablen – Dynamische Steuerung von Paketen.
Ein SSIS-Paket (.dtsx) wird in Visual Studio (SSDT) entwickelt, in der SSISDB bereitgestellt und mit SQL Agent oder ADF geplant.
🔧 SSIS Versionen & Tools
SQL Server Versionen mit SSIS: Seit SQL Server 2005. Wichtige Meilensteine:
- SQL Server 2012 – SSISDB-Katalog, Projektbereitstellungsmodell.
- SQL Server 2016 – AlwaysOn für SSISDB.
- SQL Server 2017/2019/2022 – Scale Out, Linux-Integration (eingeschränkt).
Entwicklungsumgebung
SQL Server Data Tools (SSDT) – Kostenlose Erweiterung für Visual Studio 2022 (enthält SSIS-, SSAS- und SSRS-Projekte).
Weitere Tools
- SSIS Deployment Wizard – Bereitstellung in SSISDB/Dateisystem.
- dtutil.exe – Kommandozeilen-Tool.
- SSIS Scale Out Manager – Konfiguration von Scale Out.
📊 SSIS Sample Data – Beispieldaten
CSV-Beispieldatei (sales.csv)
OrderID,Product,Quantity,Price,OrderDate 1001,Laptop,1,1200,2024-01-15 1002,Mouse,5,25,2024-01-16 1003,Keyboard,2,45,2024-01-17
SQL Server Tabelle erstellen
CREATE TABLE dbo.SalesSource ( OrderID INT, Product NVARCHAR(100), Quantity INT, Price DECIMAL(10,2), OrderDate DATE ); INSERT INTO dbo.SalesSource VALUES (1001,'Laptop',1,1200,'2024-01-15'), (1002,'Mouse',5,25,'2024-01-16'), (1003,'Keyboard',2,45,'2024-01-17');
Für fortgeschrittene Szenarien: AdventureWorks Testdatenbank verwenden.
🆕 SSIS-Projekt erstellen (SSDT)
- Visual Studio → Datei → Neu → Projekt.
- Vorlage: "Integration Services-Projekt" wählen.
- Name und Speicherort festlegen.
- Im Projektstandard
Paket.dtsxdoppelklicken → Control Flow Designer wird geöffnet. - Connection Manager anlegen (z.B. OLE DB, Flat File).
⚙️ SSIS Control Flow – Steuerungsablauf
Der Control Flow definiert die Reihenfolge der Tasks. Besteht aus:
- Tasks – Execute SQL, Data Flow, File System usw.
- Container – For-Schleife, Foreach-Schleife, Sequence.
- Precedence Constraints – Grüner Pfeil (Erfolg), roter Pfeil (Fehler), gelber Pfeil (Abbruch).
[Execute SQL Task] → (grün) → [Data Flow Task] → (grün) → [Send Mail Task]
Der Foreach Loop Container durchläuft z.B. Dateien in einem Ordner.
▶️ Wichtige Tasks in SSIS
- Execute SQL Task – SQL-Befehle ausführen, Ergebnisse in Variablen speichern.
- File System Task – Dateien/Ordner kopieren, verschieben, löschen.
- Data Flow Task – Enthält den gesamten Datenfluss (Extract, Transform, Load).
- Execute Process Task – Externe Programme (Python, BAT) starten.
- Send Mail Task – E-Mails via SMTP.
- FTP Task – Dateiübertragung per FTP.
- Script Task – C#/VB.NET Code für komplexe Logik.
🌊 Data Flow – Das Herz von SSIS
Im Data Flow werden Daten zeilenweise durch eine Pipeline bewegt. Kernkomponenten:
- Quellen (OLE DB Source, Flat File Source, Excel Source).
- Transformationen (Derived Column, Lookup, Aggregate, Conditional Split).
- Ziele (OLE DB Destination, Flat File Destination).
Fehlerzeilen können über rote Ausgänge umgeleitet werden.
📖 Daten lesen – Quellen in SSIS
- OLE DB Source – SQL Server, Oracle, Access (SQL-Befehl oder Tabelle).
- Flat File Source – CSV, TXT (Trennzeichen oder feste Breite).
- Excel Source – Liest Excel-Tabellen (32-Bit erforderlich).
- XML Source – Extrahiert Daten aus XML mit XSD.
- ODBC Source – Für PostgreSQL, MySQL u.a.
🔄 Wichtige Transformationen in SSIS
- Derived Column – Neue Spalten berechnen (z.B.
Price * Quantity). - Lookup – Werte in Referenztabelle nachschlagen.
- Aggregate – Gruppierungen (SUM, AVG, COUNT).
- Sort – Daten sortieren.
- Merge Join – JOIN zweier sortierter Eingaben.
- Union All – Mehrere Eingaben vereinen.
- Conditional Split – Aufteilung nach Bedingungen.
- Data Conversion – Datentyp ändern.
- Pivot/Unpivot – Zeilen zu Spalten / Spalten zu Zeilen.
💾 Schreiben von Daten – Ziele
- OLE DB Destination – INSERT, Fast Load (für hohe Geschwindigkeit).
- Flat File Destination – Export nach CSV/TXT.
- Excel Destination – Schreibt in Excel-Tabellen.
- SQL Server Destination – Bulk-Import (nur lokaler SQL Server).
- ODBC Destination – Für externe Datenbanken.
- Recordset Destination – Ergebnis in Variable speichern.
🚀 Bereitstellung & Planung
Projektbereitstellungsmodell (empfohlen) – Deployment in SSISDB-Katalog.
- Rechtsklick auf Projekt → "Bereitstellen" → Deployment Wizard.
- Zielserver angeben (SSISDB muss existieren).
- Umgebungen (Environment) mit Variablen für Dev/Prod anlegen.
- Planung mit SQL Server Agent: Neuer Auftrag → Schritt vom Typ "SSIS-Paket aus SSISDB".
Alternativ: dtutil oder PowerShell.
⚡ SSIS Performance Tuning
- Puffergröße –
DefaultBufferSize(z.B. 100 MB) erhöhen. - Lookup mit Full Cache für kleine Referenztabellen.
- Blockierende Transformationen (Sort, Aggregate) reduzieren.
- Fast Load mit Tabellenlock für OLE DB Destination.
- Parallelität – Mehrere Data Flow Tasks parallel im Control Flow ausführen.
- Indizierte Quellabfragen – WHERE auf Indexspalten.
- Protokollierung einschränken – Nur OnError/OnWarning loggen.
Überwachung mit catalog.executions und catalog.execution_statistics in SSISDB.
🌍 SSIS Scale Out – Verteilte Ausführung
Seit SQL Server 2017 möglich. Pakete laufen auf mehreren Worker-Knoten.
- Scale Out Master – Koordinator (ein SQL Server).
- Scale Out Worker – Führen Pakete aus (mehrere Maschinen).
Setup
- Master über SQL Server Setup installieren (Integration Services Scale Out).
- Worker installieren und im Master registrieren.
- In SSMS ein Paket ausführen → "Scale Out" auswählen.
Verwaltung mit SSIS Scale Out Manager.
☁️ SSIS in Azure Data Factory (ADF)
Mit Azure Data Factory können Sie vorhandene SSIS-Pakete in der Cloud ausführen – Lift & Shift.
- Azure Data Factory erstellen.
- Azure-SSIS Integration Runtime (IR) bereitstellen (Knotengröße, Anzahl).
- SSIS-Projekt in SSISDB (auf Azure SQL Managed Instance oder SQL DB) bereitstellen.
- In ADF-Pipeline Aktivität "Execute SSIS Package" hinzufügen.