Freitag, 12. November 2010

XMLA Skript mit SSIS ausführen

Die Aufgabenstellung: Mit einem SSIS Paket soll ein XMLA Skript ausgeführt werden, um zum Beispiel eine neue Partition in einem Analysis Services Cube anzulegen.
Das Problem: Es gibt in SSIS keinen Task, der XMLA Skripte ausführt.
Die Lösung: Der "Execute SQL Task" leistet - trotz seines Namens - genau das Gewünschte.

Sehen Sie, wie es geht:
  1. Legen Sie einen ADO oder OLE DB Connection Manager an. Geben Sie als Provider "Analysis Services" an.
  2. In der Ablaufsteuerung fügen Sie einen "Execute SQL Task" hinzu.
  3. Wählen Sie als ConnectionType entsprechend dem vorher erstellten Connection Manager ADO oder OLE DB aus und wählen Sie unter Connection diesen Connection Manager aus.
  4. Lassen Sie SQLSourceType auf Direct Input stehen und geben Sie in SQLStatement das XMLA Skript ein (am besten das Skript mit Hilfe der Zwischenablage aus SQL Server Management Studio übertragen).  Ich habe als Beispiel ein kleines ClearCache Skript eingefügt.
  5. Starten Sie den Task (Rechtsklick auf den Task und im Kontextmenü "Execute Task" auswählen) - das war's schon!
Richtig interessant wird diese Möglichkeit, wenn Sie das XMLA Skript nicht direkt eingeben, sondern eine der beiden anderen Möglichkeiten von SQLSourceType nutzen:
  1. "File connection" ermöglicht Ihnen, das Skript aus einer Datei zu lesen.
  2. "Variable" holt das Skript aus einer Variablen. Mit Hilfe eines "Script Task" können Sie vorher das XMLA Skript in diese Variable schreiben.
Nachtrag: Mit dieser neu erworbenen "Freiheit des Denkens" ist mir dann aufgefallen, dass es noch eine zweite Möglichkeit gibt, XMLA Skripts in SSIS auszuführen: Der "Analysis Services Execute DDL Task" ist nämlich im Gegensatz zu seinem Namen nicht auf die Ausführung von DDL Statements beschränkt. Er kann (soweit ich sehen konnte) alle XMLA Befehle ausführen.