Ejecución asincrónica de procedimientos almacenados

13/11/2003 - 16:53 por Pablo Crosio | Informe spam
Estimados colisteros!!

Mi objetivo es ejecutar un stored procedure desde una
aplicación cliente ADO.NET en forma asincrónica (el stored
procedure demora aproximadamente 20 minutos en ejecutarse).
Por lo investigado ADO.NET no soporta ejecuciones
asincrónicas como podía efectuarse con ADO tradicional.
(Si esto no es así, me gustaría saber cómo realizar una
ejecución asincrónica desde ADO.NET.)
Como alternativa opté por la utilización de hilos. Con un
hilo lanzaba el SP y mediante otro controlada el avance
del proceso. El problema de esto es que tenía una conexión
permanente de 20 minutos, y aleatoriamente obtenía errores
de red, por lo que se me cortaba el proceso.
Opté entonces por crear un trabajo en Sql-Agent que
disparara el SP. De esta forma, ejecutaba el trabajo desde
el cliente y luego controlaba su finalización consultando
la base base de datos. Esta solución fue la que tuvo más
aceptación ya que la ejecución desde el cliente era
realmente asincrónica.
Ok, el problema que tengo ahora es el siguiente; si el SP
que es disparado por el trabajo tiene un error, el trabajo
se detiene pero el SP sigue corriendo. Tengo forma de
detectar que el trabajo se detuvo pero lo que deseo es
poder parar también el SP. Si el trabajo esta en ejecución
puedo cancelarlo y en consecuencia se detiene el SP; pero
el tema acá es que el trabajo está detenido (con error) y
no tengo forma de cancelarlo. ¿Existe una forma de
cancelar directamente el SP desde el cliente bajo esta
situacion? (teniendo en cuenta que no tengo una conexion
activa ligada al SP) ¿O existe una forma alternativa de
lograr el objetivo de ejecutar procesos en forma
asincrónica desde un cliente ADO.NET?

Desde ya mil gracias y perdón por lo extenso del mensaje

Salu2!!

Pablo
 

Leer las respuestas

#1 Carlos Sacristan
13/11/2003 - 17:14 | Informe spam
Creo que sería mejor que esta pregunta la hicieras en el grupo de .NET



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Pablo Crosio" escribió en el mensaje
news:072101c3a9fe$4fd39700$

Estimados colisteros!!

Mi objetivo es ejecutar un stored procedure desde una
aplicación cliente ADO.NET en forma asincrónica (el stored
procedure demora aproximadamente 20 minutos en ejecutarse).
Por lo investigado ADO.NET no soporta ejecuciones
asincrónicas como podía efectuarse con ADO tradicional.
(Si esto no es así, me gustaría saber cómo realizar una
ejecución asincrónica desde ADO.NET.)
Como alternativa opté por la utilización de hilos. Con un
hilo lanzaba el SP y mediante otro controlada el avance
del proceso. El problema de esto es que tenía una conexión
permanente de 20 minutos, y aleatoriamente obtenía errores
de red, por lo que se me cortaba el proceso.
Opté entonces por crear un trabajo en Sql-Agent que
disparara el SP. De esta forma, ejecutaba el trabajo desde
el cliente y luego controlaba su finalización consultando
la base base de datos. Esta solución fue la que tuvo más
aceptación ya que la ejecución desde el cliente era
realmente asincrónica.
Ok, el problema que tengo ahora es el siguiente; si el SP
que es disparado por el trabajo tiene un error, el trabajo
se detiene pero el SP sigue corriendo. Tengo forma de
detectar que el trabajo se detuvo pero lo que deseo es
poder parar también el SP. Si el trabajo esta en ejecución
puedo cancelarlo y en consecuencia se detiene el SP; pero
el tema acá es que el trabajo está detenido (con error) y
no tengo forma de cancelarlo. ¿Existe una forma de
cancelar directamente el SP desde el cliente bajo esta
situacion? (teniendo en cuenta que no tengo una conexion
activa ligada al SP) ¿O existe una forma alternativa de
lograr el objetivo de ejecutar procesos en forma
asincrónica desde un cliente ADO.NET?

Desde ya mil gracias y perdón por lo extenso del mensaje

Salu2!!

Pablo

Preguntas similares