Microsoft SQL Server 2012 Integration Services – Data Taps

Mit dem Release der SQL Server 2012 Integration Services kommen nicht nur neue Funktionen, einige bestehende Funktionen mussten leider auch gehen. Um Daten innerhalb des Datenflusses schnell zu visualisieren gibt es in den SSIS 2005 und 2008 Data Viewers, die einem Datenfluss-Pfad hinzugefügt werden können.

SNAGHTML5d1fe2a

Hier konnten die Ergebnisse in einem Grid ausgegeben oder auch in Form verschiedener Grafiken dargestellt werden. Dazu boten die Integration Services bisher Histogramme, Scatter Plot (x,y) oder einen einfachen Column Chart an. Ich habe – speziell die Column Charts – in einigen Projekten während der Entwicklung zu Debugging-Zwecken eingesetzt, habe aber auch in dem ein oder anderen Vortrag feststellen müssen, dass im Allgemeinen die Visualisierung der Daten in einem Diagramm nicht sehr häufig verwendet wurde.

SNAGHTML5d325a7[7]      image

In die SSIS 2012 haben es die Data Viewer Charts nicht mehr geschafft, so dass über den Datenfluss-Pfad die Daten nur noch in einem Grid (rechtes Bild) dargestellt werden können.

Hinzugekommen in den SQL Server 2012 Integration Services sind die sogenannten Data Taps, die jedoch nicht als Ersatz für die zuvor beschriebenen Data Viewer Charts zu verstehen sind. Bei den Data Taps handelt es sich vielmehr um eine Ergänzung/Erweiterung der bestehenden Debugging-Möglichkeiten innerhalb des Datenflusses und sind eher die persistierte Version des Data Viewer. Mit den Data Taps wird den Entwicklern z.B. in Produktivumgebungen, in denen normalerweise kein direkter Zugriff auf die SSIS-Pakete und somit auf den Datenfluss besteht, endlich eine Analysemöglichkeit in die Hand gegeben, mit denen einzelne Ausgaben innerhalb des Datenflusses überprüft werden können. Hierzu können während der Laufzeit eines Paketes eine Kopie der Daten eines speziellen Datenfluss-Pfad als CSV-Datei gespeichert werden.

 

Grundinformationen über das Paket

Im Folgenden möchte ich in mit Hilfe eines kleinen Demo Paketes zeigen, wie Data Taps eingerichtet und verwendet werden können. Das Demo-Paket lädt Daten aus der AdventureWorks Datenbank, fügt dann eine Spalte mit Daten über den Task “Transformation” hinzu und speichert die Daten wieder auf dem SQL Server.

image

Um Data Taps einzurichten werden ein paar Informationen über das SSIS-Paket benötigt:

Folder Name
Der Name des Ordners in dem das SSIS Paket welches ausgeführt werden soll gespeichert wurde. Der Name des Paketes ist ein nvarchar(128).

Project Name
Der Name des SSIS Projektes welches das Paket das ausgeführt werden soll enthält. Der Name des Projektes ist ein nvarchar(128).

Package Name
Der Name des SSIS-Paketes das ausgeführt werden soll. Der Name des Paketes ist ein nvarchar(128).

Data Flow Path Identification String
Der Identification String, der den Datenfluss-Pfad innerhalb des SSIS Paketes definiert. Der Identification String wird nicht über den Datenfluss-Pfad selber definiert, sondern durch die ihm vorgelagerte Komponente. Bei einer “OLEDB Source” oder einer “Abgleiteten Spalte” kann dieser z.B. über den “Erweiterten Editor” angepasst werden.

SNAGHTML654ff74

 


Data Flow Package Path

Der Pfad innerhalb des Paketes auf das man sich bezieht. Normalerweise der Paketname gefolgt vom Name des Datenfluss Task, z.B. “PackageDataFlowTask_001”. Der Pfad ändert sich durch das Anpassen von Paket- oder Task-Namen innerhalb des Paketes

 

Gespeicherte Prozeduren im SSIS Catalog

Sobald die Grundinformationen über das Paket bereit stehen, können die Data Taps dem Paket hinzugefügt und konfiguriert werden. Hierfür existieren verschiedene gespeicherten Prozeduren, die fester Bestandteil des SSIS Catalogs sind. An dieser Stelle sind für die Demo die Prozeduren [catalog].[create_execution] und [catalog].[add_data_tap] sowie die Prozedur [catalog].[start_execution] für die eigentlich Ausführung des Paketes wichtig.

Als erstes wird mit der Prozedur [catalog].[create_execution] eine Instanz einer Ausführung erstellt:

EXEC [catalog].[create_execution]        
@folder_name = N'Demo',
@project_name = N'DataTaps',
@package_name = N'Package.dtsx',
@execution_id = @execution_id OUTPUT

Über die gespeicherte Prozedure kann zusätzlich auch definiert werden ob die 32-Bit Runtime bei der Ausführung verwendet werden soll. Alle Ausführungen die erstellt worden sind, können über die Sicht [catalog].[executions] ausgegeben werden. Eine Instanz einer Ausführung kann grundsätzlich nur einmal gestartet werden.

Danach wird über die gespeicherte Prozedur [catalog].[add_data_tap] zu dieser Ausführung ein Data Tap hinzugefügt:

EXEC [catalog].[add_data_tap]        
@execution_id = @execution_id,        
@task_package_path = N'PackageProdukte',        
@dataflow_path_id_string = N'Paths[Produkte.Quelle]',        
@data_filename = N'OriginalDaten.csv',        
@data_tap_id = @data_tap_id OUTPUT

Bei dieser Prozedur kann über den Parameter @max_rows zusätzlich auch noch die Anzahl an auszugebenden Datensätzen definiert werden. Wird der Parameter nicht angegeben, wird MaRows automatisch auf –1 gesetzt und gibt somit alle Datensätze aus, die durch den Pfad “fließen”.

Mit der gespeicherten Prozedur [catalog].[start_execution] kann dann die entsprechende Execution ausgeführt werden:

EXEC [catalog].[start_execution] @execution_id 

Die Ausgabe findet grundsätzlich als CSV Datei statt. Die entsprechende Datei ist nach erfolgreicher Ausführung im Verzeichnis

C:Program FilesMicrosoft SQL Server110DTSDataDumps

zu finden.

Alle DataTaps, sowohl von bereits ausgeführten wie auch von noch nicht ausgeführten Ausführung können über die Sicht [catalog].[execution_data_taps] abgerufen werden. Über diese Sicht gelangt man auch an die data_tap_id, welche wiederum benötigt wird, wenn man ein Data Tap mit Hilfe der Prozedur [catalog].[remove_data_tap] wieder löschen möchte.

Weitere Informationen zu Data Taps und dem SSIS Catalog sind natürlich in der MSDN zu finden:

Views (Integration Services Catalog)

Stored Procedures (Integration Services Catalog)