Actualmente trabaja con Oracle, pero también necesitará una solución para MS SQL.Cómo cancelar una operación larga de la base de datos?
Tengo una GUI que permite a los usuarios generar SQL que se ejecutará en la base de datos. Esto puede llevar mucho tiempo, según la búsqueda que generen. Quiero que la GUI/aplicación responda durante esta búsqueda y quiero que el usuario pueda cancelar la búsqueda.
Estoy usando un hilo de trabajador de fondo.
Mi problema es que, cuando el usuario cancela la búsqueda, no puedo interrumpir la llamada a la base de datos. Espera hasta que se termine y luego, puede sondear la propiedad 'CancelationPending'. No solo esto desperdicia recursos en la base de datos, sino que crea problemas para mi código.
Si el usuario hace clic en 'Buscar' en una consulta muy larga, luego hace clic en 'Cancelar' y luego 'Buscar' otra vez - la primera búsqueda todavía está desapareciendo en la base de datos. El trabajador de fondo todavía está ocupado cuando vuelven a buscar. La única solución que tengo para este problema es crear un nuevo trabajador de segundo plano.
Parece una manera realmente fea de hacer las cosas. La base de datos sigue funcionando Estoy creando nuevas instancias de trabajadores en segundo plano ... cuando realmente quiero PARAR la llamada a la base de datos y volver a usar el mismo trabajador.
¿Cómo puedo hacer eso?
Gracias por todas las publicaciones; Realmente no estoy seguro de cuál es la mejor respuesta; todo el voto ascendente parece haber venido de mí. Mis disculpas si tomé la decisión equivocada. –
cualquier buen código de muestra? – Kiquenet