Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Eseguire una procedura memorizzata da un modulo di Windows in modo asincrono e quindi disconnettersi?

Questo è in realtà uno scenario abbastanza comune. Non puoi fare nulla in base al client perché il client potrebbe andare via e disconnettersi e perderai il lavoro svolto finora. La soluzione consiste nell'usare Attivazione di Service Broker :crei un servizio nel database e alleghi una procedura attivata. Nella tua applicazione (o pagina ASP) invii un messaggio al servizio e incorpori i parametri necessari per la tua procedura. Dopo il commit dell'applicazione, il messaggio attiva la procedura di servizio. la procedura di servizio legge i parametri dal messaggio e richiama la tua procedura. poiché l'attivazione avviene su un thread del server non correlato alla connessione originale, questo è affidabile. Infatti il ​​server può anche spegnersi e riavviarsi mentre la tua procedura è in esecuzione e il lavoro verrà ripristinato e poi ripreso, poiché il messaggio di attivazione riattiverà la procedura di servizio dopo il riavvio.

Aggiorna

Ho pubblicato i dettagli su come farlo, incluso il codice di esempio sul mio blog:Esecuzione della procedura asincrona .