¿Cómo detener una consulta en ejecución?
Yo uso RODBC para enviar consultas a un servidor SQL. A veces tardan demasiado en correr, por lo que necesito cancelarlos.
Al hacer clic en el botón rojo "detener" en RStudio, aparece este mensaje de error:
R no responde a su solicitud de interrumpir el procesamiento, por lo que para detener la operación actual, es posible que deba terminar R por completo.
La finalización de R hará que su sesión de R se suspenda inmediatamente. Los cálculos activos se interrumpirán y los cambios del archivo fuente no guardado y los objetos del espacio de trabajo se descartarán.
¿Quieres terminar R ahora?
Y si hago clic en Sí, mi sesión se termina. (nota: usar Rgui en lugar de RStudio no mejora las cosas)
Sin embargo:
cuando uso otro software (llamado "Query ExPlus") para conectarme a este mismo SQL-Server, tengo un botón de detención similar, y al hacer clic en él se interrumpe instantáneamente la consulta, sin ningún bloqueo.
Cuando me conecto a una base de datos PostgreSQL usando el paquete RPostgres, también puedo interrumpir la consulta en cualquier momento.
Estos dos puntos me llevan a pensar que debería haber una manera de resolver mi problema. ¿Que puedo hacer?
Hasta ahora, mi solución es:
library(RODBC)
library(R.utils)
withTimeout(mydf <- sqlQuery(myconnection, myquery), timeout=120)
Nota: No tengo permiso para eliminar consultas desde el lado de la base de datos.