SQL Server 2012 Integration Services

Werbung
SQL Server 2012 Integration Services
Überblick und Best Practices
Robert Panther, Senior Consultant
15.03.2013
© CGI Group Inc.
Vorstellung
Name
Robert Panther
Rolle
Senior Consultant, Logica now a part of CGI
Fachliche
Schwerpunkte
• Datenbanken: Design, Implementierung & Administration
(insbesondere Performance Optimierung und ETL mit SSIS)
• Mobile Anwendungen: Design & Implementierung
• Webanwendungen: Implementierung & Administration
Technologien
• Microsoft SQL Server
• Windows Mobile
• .NET (VB .NET & C#), ASP, ASP.NET
Methoden
Datenbankdesign, Objektorientierte Programmierung, Strukturierte
Programmierung, Schulungskonzeption & Durchführung, Projektleitung
Zertifikate
Informatik Diplom (FH)
MCTS SQL Server 2005 Implementation & Maintenance
MCTS SQL Server 2005 Business Intelligence
MCTS SQL Server 2008 Implementation & Maintenance
MCITP SQL Server 2008 Developer
Spezielles
Autor von mehreren Fachbüchern und Fachartikeln
Leitung der SQL Server Expert Group bei Logica / CGI
regelmäßiger Speaker auf Fachkonferenzen
aktives PASS-Mitglied
2
Agenda
Überblick SSIS
Neuerungen in SSIS 2012
Best Practices
 Allgemeine Konventionen
 Struktur von SSIS-Projekten
 Namenskonventionen
Lösungen für bekannte Probleme
Fazit
 Was fehlt noch?
 Links & Literatur
3
Überblick SSIS
Überblick SSIS
Was ist SSIS?
• SSIS = SQL Server Integration Services
• SSIS ist ein ETL-Tool
• E – Extract : Extrahieren von Daten
• T – Transform : Transformieren von Daten
• L – Load: Laden von Daten
• SSIS ist Bestandteil des SQL Servers (bzw. dessen BI-Tools)
• SSIS : SQL Server Integration Services
• SSAS : SQL Server Analysis Services
• SSRS : SQL Server Reporting Services
5
Überblick SSIS
Typische Verwendungszwecke von SSIS:
• Befüllen von Data Warehouses
• Datenmigrationen
• regelmäßige Datenabgleiche
• Export-Batches
• etc.
Historie von SSIS:
• SQL Server 2000 : DTS (Vorgänger von SSIS)
• SQL 2005/2008/2008 (R2) : SSIS (jeweils leicht verbessert)
• SQL 2012 : SSIS stark überarbeitet
6
Überblick SSIS
Entwicklung von SSIS-Paketen:
• Bis SQL 2008 R2 mit dem Business Intelligence Development Studio
• Seit SQL 2012 mit den SQL Server Data Tools
Ausführung von SSIS-Paketen:
• in Entwicklungsumgebung (zum Testen und Debuggen)
• explizit über das SQL Server Management Studio
• geplant über den SQL Server Agent
• über das Execute Package Utility (DTEXEC/DTEXECUI)
• SSIS läuft als eigener Prozess
7
Überblick SSIS – Projekte und Pakete
Projektmappen:
• können mehrere Projekte beinhalten
• die Projekte können unterschiedliche Typen haben
SSIS-Projekte:
• können mehrere SSIS-Pakete enthalten
SSIS-Pakete:
• sind vergleichbar mit einzelnen Programmen
• ein SSIS-Paket wird komplett in einer DTSX-Datei gespeichert
(XML-Format)
• werden in der Quelltextverwaltung komplett ausgecheckt
8
Überblick SSIS – Ablaufsteuerung
• die Grundstruktur eines SSIS-Pakets wird über die
•
•
•
•
Ablaufsteuerung (engl. Control Flow) festgelegt
mit einem Programmablaufplan vergleichbar
setzt sich aus Ablaufsteuerungselementen zusammen
• Verarbeitungstasks
• Strukturelemente (Schleifen- und Sequenzcontainer)
• Sonderfall: Wartungsplantasks
Bestimmte Tasks können separat definierte Module aufrufen:
• Datenflusstask
• ‚Paket ausführen‘-Task
• ‚Prozess ausführen‘-Task
• ‚SQL ausführen‘-Task
In der Ablaufsteuerung findet auch das Transaktionshandling statt
9
Überblick SSIS – Ablaufsteuerung
Ein einfacher Ablauf:
10
Überblick SSIS – Ablaufsteuerung
Ausführungsreihenfolge:
• nicht verbundene Tasks werden parallel ausgeführt
• mit Pfeilen verbundene Tasks werden in der Reihenfolge der
Pfeilrichtung ausgeführt
• mehrere Ausgangspfeile bedeuten parallele Ausführung
• mehrere Eingangspfeile bedeuten alle vorangegangenen Schritte
müssen fertig sein (kann auch anders eingestellt werden)
• Verbindungspfeile lassen sich mit Einschränkungen
(Erfolg/Fehler/Beendigung) und/oder Ausdrücken „verfeinern“
• Tasks können mit Sequenzcontainern gruppiert werden
• Tasks können mit For- bzw. Foreach-Schleifencontainern mehrfach
durchlaufen werden
11
Überblick SSIS – Datenfluss
• der wichtigste Task in der Ablaufsteuerung ist der Datenflusstask
• ein Datenfluss stellt den eigentlichen ETL-Prozess dar
• Datenflüsse werden in einer separaten Ansicht entworfen und
bestehen normalerweise aus drei Komponenten:
• Datenflussquelle (Extract)
• Datenflusstransformation (Transform)
• Datenflussziel (Load)
• Datenflüsse werden im Prinzip in Pfeilrichtung ausgeführt
• weder satzweise noch komplett pro Schritt, sondern in Blöcken
• Ziel dabei ist eine größtmögliche Parallelität
12
Überblick SSIS – Datenfluss
Ein einfacher Datenfluss:
13
Überblick SSIS – Datenfluss
Datenquellen und –ziele:
• Es gibt vielfältige Datenquellen & -ziele:
• Flatfiles
• Excel-Tabellen
• XML-Dateien
• ADO .NET (SQL Server, Oracle, ODBC etc.)
• OLE DB (SQL Server, Oracle, Jet Engine/MS Access etc.)
• Wird eine Datenbank als Quelle genutzt, kann wahlweise eine
Tabelle/Sicht oder auch eine SQL-Abfrage angegeben werden
14
Überblick SSIS – Datenfluss
Transformationen:
• Transformationen verändern die eingehenden Daten
• Transformationen können auch die Anzahl der Zeilen- und Spalten
verändern
• einige Transformationstypen haben mehrere Eingänge
• UNION ALL (UNION von beliebig vielen – auch unsortierten - Eingängen)
• Zusammenführen (UNION von zwei sortierten Eingängen)
• Zusammenführungsverknüpfung (JOIN von zwei sortierten Eingängen)
• einige Transformationstypen haben mehrere Ausgänge
• für korrekte und fehlerhafte Zeilen
• Multicast (mehrere identische Ausgänge)
• für komplexe Transformationen können Skriptkomponenten genutzt
werden, deren Code pro Zeile des Datenflusses durchlaufen wird
15
Neuerungen in SSIS 2012
Neuerungen in SSIS 2012
Allgemein
• nutzt VS 2010 IDE (u.A. Zoom und frei verschiebbare Fenster)
• APIs für Erweiterungen
• Scope von Variablen nachträglich anpassen
• besser lesbares XML
• endlich ein Undo im Designer!
• copy & paste verbessert
• Autosave & Recovery
• kein DTS-Support mehr
17
Neuerungen in SSIS 2012
SSIS-Server
• verwaltet komplette Projekte,
nicht nur einzelne Pakete
• besitzt eigene Katalog-DB (SSISDB)
• Pakete über SSIS-Dienst remote ausführbar
• Integration Services-Dashboard
• Verwaltung und Ausführung über SPs
• eigene Performance-Counter
18
Neuerungen in SSIS 2012
SSIS-Projekte
• Connection Manager auf Projektebene
(keine Shared DataSource mehr)
• Konfiguration mit Hilfe von Projektparametern
• Deployment in Form von .ispac-Dateien
Ablaufsteuerung
• Execute Package wahlweise aus Projektreferenz
(ohne expliziten Connection Manager)
• Expression Task (Ausdruckstask)
(z.B. zum Vorbelegen von Variablen)
19
Neuerungen in SSIS 2012
Datenfluss
• Source/Destination Assistent
• Work Offline
• mapping changes reparieren (z.B. geänderte Spaltennamen)
• Pivot über Spaltenbezeichnungen (nicht mehr LineageIDs)
• gruppieren im DF (mit collapse & expand)
• Merge & Merge Join
(gedrosselt wenn ein Input langsam, spart Ressourcen)
• vereinfachter Datenviewer (keine graphische Darstellung)
• spezielle Data Quality-Transformationen (DQS-Bereinigung)
20
Best Practices
SSIS Best Practices – Allgemeine Konventionen
Allgemeine Konventionen
• Pakete sollten stets wiederholt startbar sein
• zu Beginn “aufräumen”
• evtl. Transaktionen nutzen
• Fehlerausgaben nutzen
• Im einfachsten Fall in Multicast Container
• Im Idealfall mit Fehlerprotokollierung
• Protokollierung in zusätzliche Tabellen
• z.B. für komplexe Mappings
• Konfigurierbarkeit über Variablen und Expressions
22
SSIS Best Practices – Allgemeine Konventionen
Konventionen zur besseren Lesbarkeit
• Ablaufsteuerung und Datenfluss von oben nach unten
• Notwendigkeit zum horizontalen Scrollen vermeiden
• Fehlerbehandlung im Datenfluss zur Seite führen
23
SSIS Best Practices – Struktur von Projekten
Struktur von SSIS-Projekten
• Ein Paket pro Datenquelle oder Datenziel
• Ein Master-Paket, das Unterpakete aufruft
• Konfiguration der Variablen
• Allgemeine Vor- und Nachbereitung
• Fremdschlüssel de- & re-aktivieren
• Sequenzcontainer zur Strukturierung
24
SSIS Best Practices – Struktur von Paketen
Struktur von SSIS-Paketen
• Vorbereitungsschritte
• (nicht gruppierte) Indizes deaktivieren
• Zieltabellen leeren
• Datenfluss
• Nachbereitungsschritte
• Indizes neu erstellen
25
SSIS Best Practices – Namenskonventionen
Namenskonventionen
• Name des Pakets entspricht Quelle oder Ziel (einheitlich!)
• Kurze Präfixe für Tasks und Container verwenden, z.B. …
• SCR für Script Tasks
• SQL für SQL Tasks
• EP für Execute Package
• LKP für Suche (von Lookup)
• ODB für OLE DB Quellen & Ziele
26
Lösungen für bekannte Probleme
Lösungen für bekannte Probleme
Problem:
Bestimmte Datenquellen (z.B. Excel, Access) sind nicht nutzbar.
Lösung:
• Projekt auf
32Bit
Runtime
umstellen.
28
Lösungen für bekannte Probleme
Problem:
Ziel im Datenfluss lässt bei einer fehlerhaften Zeile ganzen Block von
Zeilen in die Fehlerausgabe laufen.
Lösung:
1. OLE DB Ziel im Modus “schnelles Laden” mit Fehlerausgabe
versehen.
2. Fehlerhafte Zeilen noch einmal im “langsamen” Modus schreiben.
3. Weitere Fehlerausgabe mit Behandlung für die final fehlerhaften
Zeilen.
29
Lösungen für bekannte Probleme
30
Lösungen für bekannte Probleme
Problem:
Datenfluss schreibt in zwei Zieltabellen, von denen die eine auf die
andere verweist.
Lösungsvarianten:
a) Für Primär- und Fremdschlüssel werden vorher bekannte IDs
verwendet (evtl. vorher maximale ID ermitteln).
b) Für Primär- und Fremdschlüssel werden im Datenfluss definierte
Werte (z.B. in der Quellabfrage erzeugte Guids) verwendet.
31
Lösungen für bekannte Probleme
Problem:
Datenfluss schreibt in zwei Zieltabellen, von denen die eine auf die
andere verweist. Die Tabellen verwenden IDs mit Identitätsspezifikation.
Lösungsvarianten:
a) In erste Tabelle wird per Stored Procedure geschrieben und die ID
der neuen Zeile per Output-Parameter in Datenfluss zurückgegeben.
b) Foreign Key-Spalte wird mit temporären Wert befüllt, der nach dem
Datenfluss per Nachbereitungsskript durch die korrekte ID ersetzt
wird.
32
Fazit
Fazit – SSIS allgemein
• Selbst für einfache Datentransfers eignet sich SSIS hervorragend!
• Trotz der einfachen visuellen Darstellung darf man sich nicht darüber
hinweg täuschen lassen, dass mit SSIS sehr komplexe Abläufe
realisierbar sind!
• SSIS ist vielseitig einsetzbar
• Mit SSIS können typische Batch-Läufe implementiert werden!
• SSIS ist nahezu beliebig erweiterbar:
• Datenquellen, Tasks und Komponenten von Drittanbietern
• eigenen .NET-Code
• beliebige .NET-Assemblys
34
Fazit – SSIS allgemein
Warum SSIS und nicht .NET oder SQL?
• optimiert für Massendatenverarbeitung
• Datenquellen und –ziele können auf unterschiedlichen Servern liegen
• Fehlerbehandlung und Debugging
(Umleitung von fehlerhaften Zeilen)
• Ausnutzung der Parallelverarbeitung
• bei Bedarf können .NET und SQL eingebunden werden
35
Fazit – SSIS 2012
Die SQL Server Integration Services sind endlich erwachsen geworden.
Die meisten Unzulänglichkeiten der Vorgängerversionen wurden
beseitigt. An einigen Stellen gibt es aber noch wie vor Raum für
Verbesserungen.
Was fehlt noch?
• Unterstützung bei der Ausrichtung von Objekten im Designer
• Auskommentieren von Schritten im Datenfluss (z.B. Datenziel)
• Strukturierung von SSIS-Paketen in der Solution
(Unterordner, Sortierung etc.)
• komfortablere SQL-Editoren
• Zoom in Fehleransicht
• Datenziel mit OUTPUT (inserted)
36
Links & Literatur
Links zum Thema SSIS:
• SSIS Online-Dokumentation:
http://msdn.microsoft.com/de-de/library/ms141026.aspx
• Ressourcen für SSIS-Entwickler und IT-Spezialisten:
http://msdn.microsoft.com/de-de/sqlserver/cc511477.aspx
Links des Referenten:
• SQL Server Blog: http://pantheronsql.wordpress.com
• Logica / CGI: http://www.logica.de / http://www.cgi.com
Literatur:
• Microsoft SQL Server Integration Services:
Erstellen von Datenintegrations- und Datentransformationslösungen auf Unternehmensebene
Bernd Jungbluth, Microsoft Press, 2011
(aktualisierte Auflage für SQL 2012 für Juni 2013 geplant)
37
Ein kleines Anliegen in eigener Sache …
Zur Verstärkung unseres SQL Server Teams am Standort
Frankfurt/Sulzbach suchen wir …
Datenbankarchitekten Microsoft SQL Server (m/w)
Sie werden für die Beratung, Konzeption, Projektleitung, aber auch für die Realisierung von
anspruchsvollen Lösungen verantwortlich sein, deren technologischer Schwerpunkt im
Umfeld Microsoft SQL Server liegt. Sie helfen unseren Klienten, unternehmenskritische
Anwendungen hochverfügbar, sicher und kostengünstig zu gestalten. Dabei setzen Sie
moderne Methoden und Techniken ein und integrieren sie in die Unternehmenslandschaft.
Auf diese Weise tragen Sie dazu bei, dass zukunftsfähige Plattformen entstehen, auf denen
Business und E-Business sicher und stabil betrieben werden können.
Interesse?
Dann sprechen Sie mich an, oder schicken Sie mir eine Mail an [email protected]
38
Vielen Dank für Ihre Aufmerksamkeit!
Robert Panther
[email protected]
39
Herunterladen