Tillmann und ich sind immer auf der Suche nach interessanten Komponenten für Integration Services. Vor Kurzem bin ich auf eine neue Komponente von Microsoft gestossen, welche im Download Center zum Download zur Verfügung steht, die sogenannte Data Streaming Desitination:
http://www.microsoft.com/en-us/download/confirmation.aspx?id=39931
Um was geht es in dieser Komponente? Grob gesagt, kann ich ein SSIS Package nutzen um einen Data Feed zu erzeugen und diesen dynamisch abfragen. Wie geht das?
Über den OLE DB Provider für SSIS kann man den Datenstrom der in die Data Streaming Desitination gesendet wird als normale Query via eines Linked Server abrufen. Das sieht jetzt auf den ersten Blick nicht so interessant aus, aber was passiert hier wirklich? Eine Abfrage triggert ein SSIS Package? Das bietet doch einige Möglichkeiten.
Teil 1: Installation und SSIS Package
Installation:
Die Komponente benötigt SQL Server 2012 und SSIS. Desweiteren brauchen wir SQL Server Datatools für VS2010 oder VS2012, sowie obigen Download in der entsprechenden 32 oder 64bit Version. Die Installation ist mit eins zwei Clicks durch und brauch hier nicht dokumentiert werden. Sie kann validiert werden in dem man unter Server Objects > Linked Servers prüft ob der OLE DB Provider für SSIS installiert wurde:
Per Doppelklick muss noch die Einstellung “Allow inprocess” gesetzt werden:
SSIS Package:
Nun erstellen wir ein einfaches SSIS Package mit einer Datenquelle (Hier die Abfrage der Currency Tabelle aus AdventureWorks) und der Data Streaming Destination:
Die Data Streaming Destination muss nicht konfiguriert werden. Nun gilt es, das Package auf den entsprechenden Server zu deployen:
Wenn das geschehen ist, folgt ein entscheidender Schritt, welcher die Daten dieses Packages via Linked Servers zu verfügung stellt. Unter: C:\Program Files\Microsoft SQL Server\110\DTS\Binn findet man den DataFeedPublishingWizard, diesen gilt es auszuführen. Es erscheint folgender Startscreen:
Im zweiten Schritt muss der Server und die Datenbank ausgewählt werden. Die Datenbank ist dabei unabhängig und muss nicht mit der Quelle im SSIS Package übereinstimmen (eigentlich klar… 🙂 )
In den Settings kann ich dediziert einstellen wie das Timeout getacktet ist, ein SSIS Package kann und darf ja auch etwas komplexer sein ;), ob ich das Package nur 32bit mässig fahren kann und wie der Linked Server heisst. Wir lassen im Beispiel alles im Standard und gehen zum nächsten Schritt:
In der Validierung bekommt man eine Alarmmeldung sofern der Linked Server noch nicht erstellt wurde, was in meinem Szenario der Fall ist. Hier wird er dann vom Wizard für mich erstellt.
Der Wizard zeigt auch den entsprechenden SQL Befehl um das Package aufzurufen:
Das war der erste Schritt. Wir haben nun einen Datafeed auf Basis eines SSIS Packages. Eine kleine Anmerkung noch: Folgende Datentypen kann diese Technik bis dato noch nicht verarbeiten: text, ntext, image, nvarchar(max), varchar(max), und varbinary(max).
Nun möchten wir diese Datenquelle auf unserer Power BI Instanz nutzen. Wie das geht folgt im zweiten Teil.