Sonntag, 17. März 2013

SSIS: Cubes als Datenquelle

Mit Integration Services lassen sich Daten aus unterschiedlichsten Quellen zusammenführen - klar. Aber wie sieht es eigentlich mit Daten aus, die aus SSAS Cubes kommen?

Das Problem

Eigentlich sollte es kein Problem geben: Sie erstellen einen OLE DB Connection Manager zu der SSAS Datenbank und verwenden diesen in einer OLE DB Datenquelle. Das sieht zunächst auch gut aus, sieht man von der Warnung ab, die darauf hinweist, dass alle Spalten in den Datentyp DT_WSTR umgewandelt werden.
OLE DB Datenquelle (Analysis Services)

Ein MDX Statement anstelle eines SQL Statements geht auch
Der Button "Preview" liefert (nach einer Warnung wegen der Typumwandlung) auch die Vorschau der Daten wie erwartet. Wenn Sie jedoch den Datenfluss ausführen, dann gibt es einen Laufzeitfehler, dessen Ursache nicht klar im Protokoll zu erkennen ist.

Lösung (1)

Connection Manager haben eine Reihe von Eigenschaften, die man erst dann sieht, wenn man nach einem Doppelklick auf den Connection Manager die Schaltfläche "Data Links" anklickt.
Der Button "Data Links" führt zu den Eigenschaften der Verbindung
Dort wählen Sie den Reiter "Alle", um alle Eigenschaften zu sehen und wählen Sie dann die Eigenschaft "Extended Properties" aus. Geben Sie hier den Text "Format=Tabular" ein, wie auf dem nachfolgenden Bild zu sehen.
Für die Eigenschaft "Extended Properties" muss der Wert "Format=Tabular" eingestellt werden, damit die OLE DB Datenquelle MDX Abfragen fehlerfrei ausführt.
Wenn sie nun den Datenflusstask ausführen, gibt es keinen Laufzeitfehler mehr.
Diesen wertvollen Tipp verdanke ich Sherry Lis Blog.

Lösung (2)

Eine überraschend einfache Alternative ist die Verwendung einer ADO.NET Datenquelle anstelle der OLE DB Datenquelle. Dort tritt der Fehler gar nicht erst auf.