Я использую RODBC для отправки запросов на SQL-сервер. Иногда им требуется слишком много времени для запуска, поэтому мне нужно их отменить.
При нажатии красной кнопки "Стоп" в RStudio появляется следующее сообщение об ошибке:
R не отвечает на ваш запрос на прерывание обработки, чтобы остановить текущей операции, вам может потребоваться полностью завершить R.
Завершение R приведет к немедленному прерыванию сеанса R. активный вычисления будут прерваны, а несохраненные исходные файлы будут изменены и объекты рабочей области будут отброшены.
Вы хотите закончить R сейчас?
И если я нажму да, моя сессия действительно прекратится. (примечание: использование Rgui вместо RStudio не улучшает качество)
Однако:
-
когда я использую другое программное обеспечение (с именем "Query ExPlus" ) для подключения к этому же SQL-серверу, у меня есть аналогичная кнопка остановки, и щелчок сразу прерывает запрос без какого-либо сбоя.
-
когда я подключаюсь к базе PostgreSQL с помощью пакета RPostgres, я также могу прерывать запрос в любое время.
Эти два момента заставляют меня думать, что должен быть способ решить мою проблему. Что я могу сделать?
До сих пор мое обходное решение:
library(RODBC)
library(R.utils)
withTimeout(mydf <- sqlQuery(myconnection, myquery), timeout=120)
Примечание. У меня нет разрешения убивать запросы со стороны базы данных.