Zelfs als het technisch zou kunnen, is het echt geen goed idee! Een trigger moet erg mager zijn, en het mag zeker geen langdurige operatie zijn (wat een webservice-aanroep zeker is)! Heroverweeg uw architectuur - er zou een betere manier moeten zijn om dit te doen!
Mijn aanbeveling zou zijn om de taak van het "opmerken" dat u de webservice moet aanroepen, in uw trigger, te scheiden van de daadwerkelijke uitvoering van die webserviceaanroep.
Iets als:
-
voeg in uw triggercode een "do call the webservice later" in een tabel in (alleen de
INSERT
om het slank en snel te houden - dat is alles) -
een asynchrone service hebben (een SQL-taak, of bij voorkeur een Windows NT-service) die deze aanroepen afzonderlijk van de daadwerkelijke triggeruitvoering uitvoert en alle gegevens die van die webservice zijn opgehaald, opslaat in de juiste tabellen in uw database.
Een trigger is een heel kieskeurig iets - het moet altijd heel snel, heel slank zijn - doe een INSERT
of maximaal twee - en vermijd in ieder geval cursors in triggers of andere langdurige bewerkingen (zoals een webservice-oproep)
Brent Ozar heeft een geweldige webcast (gepresenteerd op SQL PASS) op De 10 grootste fouten van ontwikkelaars die niet kunnen worden geschaald en triggers zijn het eerste waar hij zijn focus op legt! Sterk aanbevolen