An interesting conundrum .. btw this Using InfoMessage Event of SqlConnection Object
] may give you more info on the InfoMessage Event
Ok, given we know the client side has restrictions, pleading for sanity with their IT is likely a waste of time - so here's a thought ..
1) write an interface that fires an InformationEvent - you can define what info it needs to carry - in fact, it can be a 'unifying' event but it wraps SQL execution
2) use that to build classes to handle various commands for which you might want to fire events - You might only need two implementations, one for Update/Insert data SQL statements, one for you 'ALTER ... ' type statements .. but your program will receive one type of event, your InformationEvent .. you can still use it to handle 'batches' of SQL commands as well ..