CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Fehlervermeidung im SSIS Paket mittels Cache Warming

Existiert der Bedarf, OLAP-Inhalte relational verfügbar zu machen, so kann dies entweder per zuvor hier beschriebenem linked Server, oder einer per SSIS Paket gesteuerten MDX Abfrage geschehen. Dabei kann jedoch eine recht kryptisch anmutende, schwer zu interpretierende Fehlermeldung in Bezugnahme der Datei ‘pfoledbreader.cpp’ auftauchen, die eine Ausführung von Statements gegenüber der OLAP-Datenbank verhindert. Nachfolgend wird beschrieben, wie Sie diese Fehlermeldung bei dem Einsatz eines SSIS-Paketes umgehen können.

Für den Zugriff auf multidimensionale Inhalte mittels Integration-Services-Werkzeugen ist es zunächst wichtig, die zwei involvierten Datenbanken auszuwählen. Eine OLAP-Quelldatenbank (wichtig: hier bei der OLE-DB Verbindung im Verbindungsmanager den Anbieter „Microsoft OLE DB Provider for Analysis Services 9.0“ auswählen) und eine relationale Zieldatenbank, in welche die Inhalte dann letztendlich per MDX in Tabellenform überführt werden können.

Existieren die beiden Verbindungen,

kann mittels Datenflusstask der Kern des Paketes erstellt werden.

Hier wird also eine projektübliche OLE DB Verbindung angelegt, jedoch mit dem feinen Unterschied, dass diese ja nun auf eine OLAP-Datenbank zeigen soll, also wird hier für den Datenzugriffsmodus keine Tabelle oder Sicht ausgewählt, sondern der „SQL-Befehl aus Variable“. Bei der Gestaltung und Befüllung der hier verwendeten Variable kann nun ein MDX-Befehl verwendet werden. In unserem Fall wird die für das gesamte Paket gültige Variable „MDX_Abfrage“ mit einer kurzen MDX Abfrage von Absatz und Umsatz über alle Produkthauptgruppen befüllt.

SELECT
{[Measures].[Absatz],[Measures].[Umsatz]} ON AXIS(0),
{[Produkte].[Produkthauptgruppe]} ON AXIS(1)
FROM [Deckungsbeitragsrechnung]

Bei der Auswahl des Verbindungsmanagers ist die erweiterte Einstellung „Format == Tabular“ wichtig, um eine tabellarische Übergabe des Ergebnisses zu gewährleisten.

Sind die Quelleinstellungen vorhanden, sollte nun die Zieltabelle in der relationalen Datenbank in unserem Datenfluss angegeben werden.

Ist dies alles geschehen, kann der Vorgang testweise schon ausgeführt werden.

Doch Vorsicht: An dieser Stelle kann es genau zu der eingangs erwähnten Fehlermeldung kommen, welche in etwa wie folgt aussehen sollte:

Ein sicheres Erkennungszeichen ist das inhaltliche Auftauchen des Dateinamens ‘pfoledbreader.cpp’.

Diese Fehlermeldung lässt sich mittels Cache Warming umgehen, da es zur Laufzeit des Paketes zu diesem Problem kommen kann, wenn das MDX-Statement der Variable nicht im aktuellen Cache vorrätig ist.

Hierfür ist dem Datenflusstask ein Schritt voranzustellen, der dann etwa wie folgt aussehen sollte:

Eine SQL-Abfrage, welche das MDX unserer zuvor angelegten Variable gegenüber der Quelldatenbank ausführt.

Hiermit wird sichergestellt, dass das MDX-Statement vor der eigentlichen Transaktionsausführung bereits im Cache der OLAP-Datenbank existiert (Cache Warming) und somit der kryptische Fehler nicht mehr auftreten kann.

Nach der Ausführung des Integration Services Paketes erhalten wir demnach wie gewünscht eine Tabelle in der relationalen Datenbank, welche die zuvor im MDX-Statement parametrierten Inhalte des Quellwürfels beinhaltet.