I det første forslag forestiller jeg mig at dit program kalder hver enkelt del selv og laver status udfra den status der returneres. Det afhænger af din procedures opbygning om man kan splitte den op.
Det andet forslag er også simpelt. På strategiske steder i procedures skriver du status ned i en log-tabel som dit klientprogram poller, eksempelvis 2 gange i sekundet. Det største problem her er at få data at se hvis der er transaktioner i spil, for så vil data ikke ses før en commit - medmindre du laver en named transaktion til skrivning i log-tabellen:
http://msdn2.microsoft.com/en-us/library/ms174377.aspxDet er svært at demonstrere det mere detaljeret når jeg ikke kender din procedure.
Hvordan man laver en god polleralgoritme i din klient ved jeg ikke. Kender ikke akronymet ADP.
Bemærk, jeg er ingen haj udi MSSQL, så det er da meget muligt andre kan stampe smartere forslag op.
Bemærk i øvrigt, at bruger du ikke transaktioner, vil indførslen af disse nok reducere kørselstiden til en tredjedel.