Tired of having to go into BizTalk Server Admin and terminate any suspended Orchestration instance before you want to redeploy?
Scripting this task is very simple using WMI. Just create a file called Terminate.vb and copy in this code:
TerminateAllOrchsSub TerminateAllOrchs
Query = "SELECT * FROM MSBTS_ServiceInstance where ServiceClass = 1"
Set InstSet = GetObject("Winmgmts:!root\MicrosoftBizTalkServer").ExecQuery(Query)
For Each Inst In InstSet
Inst.Terminate
Next
End Sub
Running the script will terminate all Orchestration instances.
Note: This will terminate all Orchestrations so please use caution.
It could be further parameterized to only terminate specific Orchestrations. The Query would look like:
Query = "SELECT * FROM MSBTS_ServiceInstance where ServiceClass = 1 and AssembliName='<name>'"
With<name> being the Assembly name of the Orchestration.
If you are using a helper .net class in your Solution, you can set this up as a pre or post build event so every time you deploy you'll not have to worry about deployment errors due to suspended Orchestration instances.
To set this up, just put the path to the vb script file in the event text box.
Again, I better stress this should only be used in cases that you are sure terminating all Orchestrations is what you really want to do. But it can be a great time saver for development.
Is this script for BTS2006 or 2004 or both?
Which database?
I was testing it on BizTalk 2006 but the same script should work on both 2004 and 2006.
I don’t think the type of SQL database you are using will matter.
Best of luck.
Stephen W. Thomas
This one is really useful information that I was looking for. It’s bothersome to delete all of suspended…
This is called WMI (Windows Management Instrumentation) scripts. The query language used is call WQL (WMI Query Language) as these query does not retrieve data from any table but in the background it will execute the method of the class (table name from query is a class name).
Till now there are more than 800 classes to achieve different kind of administrative tasks.
Search for “WMI classes” in google and you will get the list of classes and related methods.
These WMI scripts are really useful when you have to achieve mutiple administrative tasks on several servers.
As far as BizTalk is corcerned, there are so many things which can be achieved using WMI, like Disabling/Enabling Send/Receive Locations/Ports and so on.
It can work for any biztalk version. Ceate script with name script.vbs and run it on command prompt as > cscript script.vbs
Helpfull informatino.
Thanks to Nilesh and Stephen