Having the need to execute a package on a remote server, I discovered  that DtExec has no option to launch the package remotely (something that everybody apart me already knew…).

So… time to write some code. I wrote a WCF Service that executes a package, hosted it into a Windows Service (it can be hosted in IIS too, I just like services more than I like the web interfaces) and developed a test program that uses WCF to communicate with the server to execute the package. All this stuff has been indeed really easy to write (and this induces me to argue why Microsoft did not provide such a tool with standard SQL Server installation).

Using the WCF callback methods I succeeded in returning to the caller full details of log and events produced by the package, so that I can run a package remotely and still monitor what happens on the server side from the client. Moreover, since I needed to call the package from inside an application, I implemented a nice progressbar that shows to the user the progress of the package, by inspecting the package events, so that he knows if he can have a coffee during processing or not.

At the end, the solution is a very nice example of what can be done using WCF as a communication media and, since I don’t think that I’m the only one having such a need, I am sharing the sources with the web. If you are interested in getting the code, with some basic documentation, follow the link to the source code and have fun.

BTW: the test application can be used without the need to understand all the code and is basically a DTEXEC replacement that runs packages remotely… something that can be useful to anybody developing SSIS code.