Writing CLR procedures to run T-SQL concurrently is not an extremely new idea. I have seen a lot of implementations and I have written and improved it many times by myself as well. After those coding exercises, I found few important things were not (or just partially) addressed.
- Termination of launcher session: Either the launcher session get cancelled or killed, running asynchronous workers should be cancelled.
- Different ways to shut down a batch: Waiting Workers should be abandoned. Executing workers should be either cancelled or waited to be completed.
- Effective monitoring: People want to see which session is running what.
- Adjustable maximum threads in the course of execution.