Como parar uma consulta em execução?
Eu uso o RODBC para enviar consultas para um SQL-Server. Às vezes, eles demoram muito para serem executados, então eu preciso cancelá-los.
Clicar no botão vermelho "parar" no RStudio gera esta mensagem de erro:
R não está respondendo à sua solicitação para interromper o processamento. Para interromper a operação atual, pode ser necessário finalizar R completamente.
O encerramento de R fará com que sua sessão R seja interrompida imediatamente. Os cálculos ativos serão interrompidos e as alterações não salvas no arquivo de origem e os objetos da área de trabalho serão descartados.
Deseja encerrar o R agora?
E se eu clicar em Sim, minha sessão será encerrada. (nota: usar Rgui em vez de RStudio não melhora as coisas)
Contudo:
quando uso outro software (chamado "Query ExPlus") para conectar-me ao mesmo SQL-Server, tenho um botão de parada semelhante e clicar nele interrompe instantaneamente a consulta, sem qualquer falha.
quando me conecto a um banco de dados PostgreSQL usando o pacote RPostgres, também posso interromper a consulta a qualquer momento.
Esses dois pontos me levam a pensar que deveria haver uma maneira de resolver meu problema. O que eu posso fazer?
Até agora, minha solução alternativa é:
library(RODBC)
library(R.utils)
withTimeout(mydf <- sqlQuery(myconnection, myquery), timeout=120)
Nota: Não tenho permissão para eliminar consultas do lado do banco de dados.