Incluso si técnicamente pudiera, ¡realmente no es una buena idea! ¡Un disparador debe ser muy simple y definitivamente no debe implicar una operación prolongada (que definitivamente es una llamada de servicio web)! Reconsidere su arquitectura:¡debería haber una mejor manera de hacerlo!
Mi recomendación sería separar la tarea de "observar" que necesita llamar al servicio web, en su disparador, de la ejecución real de esa llamada al servicio web.
Algo como:
-
en su código de activación, inserte "llame al servicio web más tarde" en una tabla (solo
INSERT
para mantenerlo ligero y rápido, eso es todo) -
tenga un servicio asíncrono (un trabajo de SQL, o preferiblemente un servicio de Windows NT) que haga esas llamadas por separado de la ejecución real del activador y almacene cualquier información recuperada de ese servicio web en las tablas apropiadas en su base de datos.
Un disparador es algo muy quisquilloso, siempre debe ser muy rápido, muy ágil, haga un INSERT
o dos como máximo, y por todos los medios evite los cursores en los activadores u otras operaciones largas (como una llamada de servicio web)
Brent Ozar tiene un excelente webcast (presentado en SQL PASS) sobre Los 10 principales errores de los desarrolladores que no escalan ¡y los factores desencadenantes son lo primero en lo que pone su atención! Muy recomendable