Remote Ausführung von SSIS Paketen

In einigen Situationen ist es wünschenswert SSIS Pakete remote auszuführen.
Um es gleich vorweg zu sagen, der Parameter "/Server" beim Aufruf von dtexec dient nur dazu den Server zu bestimmen, auf dem das SSIS Paket liegt. SSIS Pakete werden immer lokal, also da wo dtexec gestartet wird, ausgeführt.

Um Pakete Remote auszuführen gibt es grundsätzlich zwei verschiedene Möglichkeiten:

  • Ausführung eines Remote Paketes über die Systemprozedur sp_start_job
  • Programmgesteuerte Ausführung eines Paketes über die Microsoft.SqlServer.Dts.Runtime

Die beiden Beispiele sind ausführlich in dem MSDN Artikel "Programmgesteuertes Laden und Ausführen eines Remotepakets" erklärt.

Ein Nachteil eines SQL Server Job ist, das keine Informationen während der Ausführung zurückgegeben werden. Die Systemprozedur gibt ledigleich an, dass der Job erfolgreich gestartet wurde und nicht ob während der Ausführung des Paketes Fehler aufgetreten sind. Da der entsprechende WebService die DTS Runtime Library nutzt, ist die Rückgabe hier prinzipiell zwar möglich, wurde bisher aber noch nicht schön umgesetzt. Es existieren auch noch weitere Möglichkeite außerhalb des SQL Servers, wie z.B. die Ausführung mittels PsExec, ein Programm von Mark Russinovich (Sysinternals) mit dem alle möglichen Prozesse remote gestartet werden können.

Dem zweiten Thema hat sich Alberto Ferrari angenommen und auf dem der Seite SQLBI.com das Tool SqlBiDtExec veröffentlicht. SqlBiDtExec verwendet zur Ausführung von SSIS Paketen, wie der in der MSDN beschriebene WebService, die DTS Runtime Library jedoch in Zusammenarbeit mit einem WCF Service. Sämtliche Ergebnisse können über das WCF Callback System an den Aufrufenden zurückgegeben werden.