Umstellung von Team4-Komponenten auf den StandardProtokoll-Mechanismus von Microsoft SQL Server 2012 Johann Jansen y Alegret Team4 GmbH Seminarvortrag WS2011/2012 27.01.2012 Inhalt 1. Grundlagen Microsoft SQL Server Integration Services - SSIS Überblick Control Flow Data Flow Connection Manager Erweiterungen von Team4 für SSIS Neuerungen bei MS SQL Server 2012 2. Aufgabenstellung 3. Analyse Team4 MS SQL 2012 GAP-Analyse 4. Beschreibung einer möglichen Realisierung 5. Fazit und Zusammenfassung 1. Grundlagen Microsoft SQL Server Integration Services - SSIS Überblick über SSIS Die SQL Server Integration Services sind ein Bestandteil von Microsoft SQL Server (MS SQL) seit Version 2005 Technologie zur graphischen Erstellung von ETL- und anderen Prozessen als SSISPaketen Entwicklung mit dem Business Intelligence Development Studio, das in Microsoft Visual Studio eingebettet ist. Zwei verschiedene Ebenen der Konfiguration: Control Flow und Data Flow Standardschnittstellen zu verschieden gängigen Datenbanksystemen und Dateitypen. Diese benutzen üblicherweise Connection Manager SSIS erweitert durch Team4-Komponenten SQL Server enthält Integration Services, eine konfigurierbare, programmierbare, hochleistungs ETLEngine (Extraction, Transformation, Load) Team4 Microsoft Dynamics CRM Connector for SSIS Team4 Lotus Notes Connector for SSIS 5 Control Flow Data Flow Connection Manager Erweiterungen von Team4 für SSIS Team4 Microsoft Dynamics CRM Connector for SSIS Team4 Connection Manager Team4 Lotus Notes Connector for SSIS Team4 Log Task for SSIS Protokollierung T4LogHdr T4LogBody PK PK FK1 FK1 ProcName StartTime MsgTime ObjType Status Indent Msg n Team4-Datenbankstruktur 1 ProcName StartTime EndTime RunTime Status Log-Report Bisher: eigene Datenbank SSIS_Log Connection Manager für SSIS_Log notwendig Meldungen wurden in zwei Tabellen der Datenbank gespeichert: T4LogHdr und T4LogBody Ausschließlich Team4Komponenten Team4 Log Report Warum hat Team4 diesen Weg der Protokollierung gewählt? Bisher gab es zum Protokollieren nach Microsoft Standard nur die Möglichkeit, einen Log-Provider auszuwählen, von denen es viele verschiedene gab. Diese Log-Provider hatten sehr unterschiedliche Ziele, z.B. das Windows-Log, eine Textdatei oder eine eigene Datenbankstruktur. Es musste bei der Entwicklung der Paketen ausgewählt werden, welche Events behandelt werden sollte. Nachträglich konnte nicht bei der Ausführung die protokollierten Events geändert werden. Es gab keine standardisierten mitgelieferte Log-Reports. Die Entwicklung eines Log-Reports war nicht so zielführend, da dieser nur für einen bestimmten Typ von Log-Provider angewendet werden könnte, von denen es aber sehr viele gab. Neuerungen bei MS SQL Server 2012 Project Deployment Model Neue Möglichkeit Pakete zu veröffentlichen: (Project Deployment Model anstatt Legacy Deployment Model). Für dieses Modell ist es nötig, einen dazugehörigen SSIS-Katalog anzulegen, eine neuartige Datenbankstruktur. Ein ganzes Projekt bestehend aus Paketen und Parametern wird als ganzes in einer Projektdatei veröffentlicht, anstatt, dass alle Paketen und Konfigurationen einzeln veröffentlicht werden müssen. Projekte werden in den Katalog veröffentlicht, anstatt wie vorher in die Systemdatenbank MSDB oder ins Dateisystem Parameter werden anstatt von Konfigurationen verwendet Parameter werden direkt Katalog gespeichert anstatt in Konfigurationsdateien Events werden bei der Ausführung automatisch gefangen und im Katalog protokolliert. Vorher mussten dafür Log-Provider hinzugefügt werden. SSIS-Katalog Übersicht über den Katalog und ein Standard-Reports von MS SQL Server 2012 Protokollierung im SSIS-Katalog catalog_encryption_keys (internal) data_type_mapping (internal) catalog_properties (internal) property_name mapping_id key_id ssis_data_type key_name object_parameters (internal) executables (internal) parameter_id executab... project_id project_id object_versions (internal) project_version_lsn project_... object_versio... object_type package... object_id object_name package... object_type parameter_name description parameter_data_... created_by executable_statistics (internal) required created_time sensitive statistics_id execution_data_taps (internal) executio... description data_tap_id packages (internal) executab... execution_id package... executio... package_path operation_os_sys_info (internal) project_... start_time dataflow_path_id_str... name Database Schema?????? end_time info_id package... operation_id description execution_component_phases (internal) total_physical_memory... available_physical_me... package... phase_stats_id version_... execution_id version_... package_name operations (internal) version_... package_location_type executions (internal) operatio... operatio... executio... created_... folder_n... object_t... project_... extended_operation_info (internal) package_path_full folder_permissions (internal) task_name id subcomponent_name info_id sid operation_id object_id package... object_id object_name object_n... referenc... status referenc... start_time environ... execution_parameter_values (internal) permission_type object_type execution_parameter_id reference_id execution_id object_type end_time folders (internal) parameter_data_type folder_id parameter_name projects (internal) name parameter_value project_id description sensitive_parameter_value folder_id created_... environment_references (internal) reference_id name project_id environment_variables (internal) environments (internal) description execution_property_override_values (internal) execution_data_statistics (internal) property_id data_stats_id execution_id execution_id package_name property_path package_location_type variable_id project_f... environment_id deploye... name deploye... environm... folder_id description property_value description type package_path_full project_permissions (internal) task_name id dataflow_path_id_string environment_permissions (internal) operation_permissions (internal) id object_id permission_type validations (internal) event_messages (internal) event_message_context (internal) operation_messages (internal) validati... event_m... operation_id event_message_id context_depth package_path context_type Neue Datenbank für Log environ... operation... operation_message... execution... validate... operation_id package_... folder_n... message_time project_... package_... message_type package_... event_na... sid id object_id sid permission_type object_id permission_type sid context_id reference_type environment_folder_name environm... 2. Aufgabenstellung Machbarkeitsstudie zur Umstellung der SSIS-Komponenten von Team4 auf den Protokoll-Mechanismus von MS SQL Server 2012 (Proof of Concept) Folgende Fragen ergeben sich: Welche Informationen werden bisher erfasst? Könnten diese Informationen weiterhin erfasst werden? Welche Unterschiede zwischen den Mechanismen existieren? Ist eine Umstellung möglich? Wie würde die Umstellung durchgeführt werden? Gibt es nach der Umstellung gravierende Unterschiede? Welcher Zeitaufwand ist notwendig? Lohnt sich die Umstellung? 3. Analyse Anforderungen an die Protokollierung aus Sicht Team4 Startzeitpunkt des Paketes Name des Paketes Text der Meldung Ursprungskomponente der Meldung Zeitpunkt der Meldung Status der Meldung Zusammenfassung und Details in Form eines Log-Reports Flexibilität soll erhalten bleiben. D. h., dass beliebige Meldungstexte verwendet werden können. Konzept der Protokollierung bei MS SQL Server 2012 Event-basiert Meldungen unterscheidbar durch Event-Typ Umfassendes Protokoll mit komplexem Datenmodell Abhängig von Log-Level bei Ausführung 4 Log-Level: None, Performance, Basic, Verbose Alle Komponenten, die dem Standard entsprechen, protokollieren in dieselbe Struktur Standard-Reports können genutzt werden Kein Connection Manager für Protokoll notwendig GAP-Analyse Log-Level wird bei jeder Ausführung im SSIS-Katalog neu festgelegt, anstatt bei der Erstellung des Paketen Log-Level kann nicht mehr in jeder verwendeten Komponente einzeln eingestellt werden Es gibt nur noch 4 Stufen anstatt 6 Es werden Meldungen von allen Komponenten erfasst anstatt nur von Team4Komponenten Nachteil: Bei einer Ausführung außerhalb des SSIS-Kataloges findet keine Protokollierung statt. Abhilfe dafür bieten LogProvider. Diese benutze allerdings eigene Speicherstrukturen außerhalb des SSIS-Kataloges, sodass Informationen evtl. mehrfach gespeichert werden. Aus dem umfangreichen Protokoll muss die Kerninformation für den Log-Report extrahiert werden Neue Tabellen enthalten benötigte Informationen über Startzeitpunkt des Paketes, Name des Paketes, Text der Meldung, Ursprungskomponente der Meldung, Zeitpunkt der Meldung, Status der Meldung(ergibt sich aus dem Event-Typ) 4. Beschreibung einer möglichen Realisierung Umstellung der Komponenten Bisher wurde bei Team4-Komponenten für Protokollmeldungen Tabelleneinträge in die SSIS_Log-Datenbanktabelle T4LogBody Stattdessen sollen Protokollmeldungen jetzt bei MS SQL 2012 einen Event auslösen, der auch im SSIS-Katalog erfasst wird Für das Protokollverfahren wird von allen Komponenten eine gemeinsame Bibliothek von Team4 verwendet. Diese muss verändert werden Auch die Masken der Team4-Komponenten müssen angepasst werden: Es soll nicht mehr die Möglichkeit geben, den Log-Level bei den Komponenten anzugeben, denn dieser soll durch die Ausführung im Katalog als Parameter bestimmt werden. Kein Connection Manager für das Protokoll soll mehr notwendig sein bei der Nutzung von Team4 Komponenten 5. Fazit und Zusammenfassung Zusammenfassung Eine 100%ig im Ergebnis identische Umstellung ist nicht möglich. Die Informationen, die zur Auswertung der Protokolls geschrieben werden, sind in verschiedenen Datenbankstrukturen gespeichert. Alle wichtige Informationen wie Art der Meldung, Meldungstext, Zeitpunkt und Komponente sind aber nach wie vor vorhanden. Größter Vorteil ist, dass Meldungen von allen Komponenten gemeinsam protokolliert werden, nicht nur die von Team4. Standardisierte Reporte können zur Auswertung des Protokolls verwendet werden. Eine Zertifizierung von Microsoft ist nur möglich unter der Nutzung des Standards. Der Aufwand der Umstellung ist überschaubar. Fazit Die Umstellung ist möglich. Der Aufwand dafür ist überschaubar. Durch eine Zertifizierung von Microsoft erhöhen sich die Marktchancen. Die Umstellung ist möglich und sinnvoll für Team4! Fragen?