Robert Panther | CGI SQL Server 2012 Integration Services Lessons Learned Vorstellung und Überblick 2 Vorstellung Name Robert Panther Rolle Senior Consultant, 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 3 Vorstellung Und wer sind Sie? • Was machen Sie mit SQL Server? – Entwicklung – Administration – Business Intelligence • Nutzen Sie SSIS? • Wenn ja, nutzen Sie SSIS 2012? • Wenn ja, mit welcher Visual Studio IDE? 4 Vorstellung: Inhalt Was Sie erwartet … • Ein kurzer Überblick über die neuen Features von SSIS 2012 • Ein Rückblick, welche Features sich bewährt haben • Tipps und Tricks zu SSIS (nicht nur für SQL 2012) Was Sie nicht erwarten sollten … • Eine Einführung in die SQL Server Integration Services • Eine 100% vollständige Abhandlung aller Neuerungen 5 Agenda 1. Vorstellung und Agenda 2. Neuerungen … … und wie sie sich bewährt haben 3. Deployment und Konfiguration 4. SSIS-Performance 5. Bekannte Probleme und Workarounds 6. Best Practices 7. Fazit und weitere Infos 6 Neuerungen … … und wie sie sich bewährt haben 7 Neuerungen Allgemeine Neuerungen • Oberfläche: aus BIDS wird SSDT BI • seit VS 2010 Zoom und frei verschiebbare Fenster • VS 2012 IDE über Nachinstallation (SQL Server Data Tools BI für VS 2012) • Scope von Variablen nachträglich anpassen • besser lesbares XML • endlich ein Undo im Designer! • copy & paste verbessert • Autosave & Recovery • kein DTS-Support mehr 8 Neuerungen SSIS-Server • verwaltet komplette Projekte, nicht nur einzelne Pakete • besitzt eigene Katalog-DB (SSISDB) • Pakete über SSIS-Dienst remote ausführbar • Verwaltung und Ausführung über SPs • eigene Performance-Counter • Integration Services-Dashboard 9 Neuerungen 10 Neuerungen SSIS-Projekte • Connection Manager wahlweise auf Paket- oder 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) 11 Neuerungen Datenfluss • Source/Destination Assistent • Work Offline • mapping changes reparieren (z.B. geänderte Spaltennamen) • Pivot über Spaltenbezeichnungen (nicht mehr LineageIDs) • Gruppieren im Datenfluss (mit collapse & expand) • Merge & Merge Join (gedrosselt wenn ein Input langsam, spart Ressourcen) • vereinfachter Datenviewer (keine graphische Darstellung) • spezielle Data Quality-Transformationen (DQS-Bereinigung) 12 Neuerungen SQL Server Data Tools BI für Visual Studio 2012 • bis vor Kurzem nutze SQL Server die Visual Studio 2010 IDE • inzwischen (seit Juni 2013) Update für VS 2012 IDE verfügbar • Bei Installation beachten! • als Administrator ausführen • neue Installation auswählen SQL Server 2012 SQL Server SSDT BI Data SSDTTools Dev. Visual Studio IDE 13 Neuerungen SQL Server Data Tools BI für Visual Studio 2012 • unterschiedliche Versionsnummern werden in Paket, Projekt und Solution abgelegt, z.B. im Projekt: • <ProductVersion>11.0.2100.60</ProductVersion> • <ProductVersion>11.0.3369.0</ProductVersion> • SSIS-Projekte (& Solutions) bleiben aber kompatibel 14 Deployment und Konfiguration 15 Deployment & Konfig Deployment bisher (vor SSIS 2012) • Deployment von einzelnen Paketdateien • Ablage in … • Dateisystem • Package Store • SQL Server (MSDB) 16 Deployment & Konfig Konfiguration bisher (vor SSIS 2012) • Konfiguration über Package Configuration • XML • Umgebungsvariablen • Registry • Parent Package • SQL Server • Verbindungsmanager bei Aufruf anpassen • über SQL Agent Job Step • über DTEXECUI • paketinterne Konfigurierbarkeit über Variablen und Expressions 17 Deployment & Konfig Deployment mit SSIS 2012 • Deployment von ganzen Projekten (.ISPAC-Dateien) • SSIS-Katalog muss vorher angelegt werden • einfacher im Handling • .ISPAC-Dateien enthalten • Pakete • Parameter • Verbindungsmanager 18 Deployment & Konfig Konfiguration mit SSIS 2012 • Konfiguration über Parameter • Verbindungsmanager • können nach wie vor bei Aufruf über DTEXECUI oder SQL Agent Job Step angepasst werden • Parameter und Verbindungsmanager können im Katalog explizit angepasst (konfiguriert) werden • über Umgebungen können Parameter und Verbindungsmanager vorbelegt werden • paketinterne Konfigurierbarkeit über Variablen und Expressions 19 Deployment & Konfig 20 Deployment & Konfig Package Configuration mit SSIS 2012 • nach wie vor nutzbar, wenn auf Package Deployment Model umgeschaltet wird • neue Funktionen des Project Deployment Model dann nicht mehr nutzbar 21 SSIS-Performance 22 SSIS-Performance Interne Arbeitsweise von SSIS-Paketen • Grundprinzipien bleiben dieselben • Daten werden normalerweise blockweise verarbeitet • Transformationen erfolgen im Hauptspeicher • Execution Trees beachten Non-Blocking Transformations – synchron (Daten laufen “direkt” durch) (Beispiele: Convert, Derived Column) Blocking Transformations – asynchron, wartet bis alle Daten gelesen sind (Beispiel: Sort, Aggregate) Partially Blocking Transformations – asynchron, wartet aber nicht bis Daten komplett sind (Beispiele: Merge, Merge Join) 23 SSIS-Performance Optimierungsansätze • Blocking Transformations vermeiden • Sortierung in Quell-Abfrage verlagern • wenn möglich, JOIN in Quellabfrage nicht als Transformation • Merge Join teilweise auch durch Lookup ersetzbar • Neu mit SQL 2012: automatische Drosselung bei Merge & Merge Join, wenn ein Input langsam 24 SSIS-Performance Engpässe lokalisieren 1. Paket im Debug-Modus analysieren 2. Kopie des Pakets erstellen 3. Zeiten für Quelle, Transformation & Ziel ermitteln • Laufzeit komplett • Laufzeit ohne Ziel • Laufzeit ohne Transformation & Ziel 4. Detailanalyse • Struktur (Execution Trees) • Quelle, Transformationen & Ziel optimieren 25 SSIS-Performance Datenquelle beschleunigen • Abfrage statt Tabelle nutzen • möglichst “schmal”: nur benötigte Spalten lesen • Daten möglichst stark vorselektieren: nur benötigte Zeilen lesen • Ausführungsplan der Abfrage prüfen • Verwendung von Indizes • Locking berücksichtigen (WITH (NOLOCK)) 26 SSIS-Performance Lookups prüfen • wie sieht die Quelle für den Lookup aus? • Tabelle oder Abfrage? • Abfrage optimieren (wie bei Datenquelle) • welcher Caching Modus wird verwendet? • kein Cache – wenn Werte nur einmal benötigt werden • Vollcache – wenn Werte mehrfach benötigt werden und Menge überschaubar • Teilcache – wenn Werte evtl. nochmal benötigt werden • wenn dieselben Daten für mehrere Lookups benötigt werden • Daten per Cachetransformation einmal in Cache laden • bei Lookups Cacheverbindungs-Manager verwenden 27 SSIS-Performance Datenziel beschleunigen • schnelles Laden (fast load) nutzen Nachteil: • Ziel im Datenfluss lässt bei einer fehlerhaften Zeile ganzen Block von Zeilen in die Fehlerausgabe laufen. Abhilfe: 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. 28 SSIS-Performance 29 Bekannte Probleme und Workarounds dazu 30 Probleme & Workarounds Problem: Bestimmte Datenquellen (z.B. Excel, Access) sind nicht nutzbar. Lösung: • Projekt auf 32Bit-Runtime umstellen. 31 Probleme & Workarounds 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. 32 Probleme & Workarounds 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 Werten befüllt, die nach dem Datenfluss per Nachbereitungsskript durch die korrekte ID ersetzt werden. 33 Best Practices 34 Best Practices 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 Parameter, Variablen und Expressions 35 Best Practices Konventionen zur besseren Lesbarkeit • Ablaufsteuerung und Datenfluss von oben nach unten • Notwendigkeit zum horizontalen Scrollen vermeiden • Fehlerbehandlung im Datenfluss zur Seite führen 36 Best Practices Struktur von SSIS-Projekten • Ein Paket pro Datenquelle oder Datenziel • Ein Master-Paket, das Unterpakete aufruft • Konfiguration der Variablen • Variableninhalte über Parameter an Unterpakete übergeben • Allgemeine Vor- und Nachbereitung • z.B. Fremdschlüssel de- & re-aktivieren • Sequenzcontainer zur Strukturierung 37 Best Practices Struktur von SSIS-Paketen • Vorbereitungsschritte • (nicht gruppierte) Indizes deaktivieren • Zieltabellen leeren • Datenfluss • Nachbereitungsschritte • Indizes neu erstellen 38 Best Practices 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 39 Fazit und weitere Infos 40 Fazit Vieles ist besser geworden Projektorientiertes Arbeiten einfachere Konfiguration & Deployment zahlreiche Detailverbesserungen in Entwickleroberfläche etc. Einiges (weniges) leider auch schlechter kein DTS-Support Deployment von einzelnen Paketen problematisch SSDT 2012 Designer etwas hakelig (WPF) Bug bei Sortierung von Dateien im Projekt 41 Fazit 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) 42 Links & Literatur Links zum Thema SSIS: • SSIS 2012 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 • SQL Server Data Tools – Business Intelligence für VS 2012: http://www.microsoft.com/de-de/download/details.aspx?id=36843 Links des Referenten: • SQL Server Blog: http://pantheronsql.wordpress.com • Logica / CGI: http://www.logica.de / http://www.cgi.com 43 Links & Literatur Literatur: • Microsoft SQL Server Integration Services: Erstellen von Datenintegrations- und Datentransformationslösungen auf Unternehmensebene Bernd Jungbluth Microsoft Press, Februar 2011 ISBN: 978-3866456549 (aktualisierte Auflage für SQL 2012 & 2014 für April 2014 geplant) • Implementing a Data Warehouse with Microsoft SQL Server 2012 Training Kit (Exam 70-463) Grega Jerkic, Matija Lah, Dejan Sarka Microsoft Press, Januar 2013 ISBN: 978-0735666092 • SQL Server Performance Ratgeber Robert Panther entwickler.press, Februar 2010 ISBN: 978-3868020304 44 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] 45 Vielen Dank für Ihre Aufmerksamkeit! Robert Panther [email protected]