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

Un trigger SQL può chiamare un servizio web?

Anche se tecnicamente potrebbe, non è davvero una buona idea! Un trigger dovrebbe essere molto snello e non dovrebbe assolutamente implicare un'operazione lunga (che è sicuramente una chiamata di servizio web)! Ripensa la tua architettura:dovrebbe esserci un modo migliore per farlo!

La mia raccomandazione sarebbe quella di separare il compito di "notare" che è necessario chiamare il servizio web, nel trigger, dall'esecuzione effettiva di quella chiamata al servizio web.

Qualcosa come:

  1. nel tuo codice di attivazione, inserisci un "chiama il servizio web più tardi" in una tabella (solo il INSERT per mantenerlo snello e veloce - questo è tutto)

  2. dispone di un servizio asincrono (un lavoro SQL, o preferibilmente un servizio Windows NT) che effettua le chiamate separatamente dall'effettiva esecuzione del trigger e memorizza tutti i dati recuperati da quel servizio Web nelle tabelle appropriate nel database.

Un trigger è una cosa molto delicata - dovrebbe sempre essere molto veloce, molto snello - fai un INSERT o due al massimo - ed evita assolutamente i cursori nei trigger o altre operazioni lunghe (come una chiamata a un servizio web)

Brent Ozar ha un ottimo webcast (presentato a SQL PASS) su I 10 errori principali degli sviluppatori che non si adattano e i trigger sono la prima cosa su cui si concentra! Altamente raccomandato