Как сразу убить / остановить длинный SQL-запрос?



Я использую SQL server 2008 и его Management studio. Я выполнил запрос, который дает много строк. Я попытался отменить его с помощью красной кнопки отмены, но он не остановился в течение последних 10 минут. Он обычно останавливается в течение 3 минут.



в чем может быть причина и как мне ее немедленно остановить ?

2568   10  

10 ответов:

что может быть причиной

запрос отменить немедленно, при условии, что ваш внимание может подключиться к серверу и обработать. Запрос должен быть в состоянии отмены, что почти всегда верно, за исключением некоторых операций, таких как вызов веб-службы из SQLCLR. Если ваше внимание не может достичь сервера, как правило, из-за планировщик перегрузка.

но если ваш запрос является частью транзакции, которая должна откатить тогда откат не может быть прерван. Если это займет 10 минут, то он должен 10 минут и вы ничего не можете с этим поделать. Даже перезапуск сервера не поможет, только сделает запуск дольше, так как восстановление должно завершить откат.

ответ , который конкретная причина относится к вашему делу, вам нужно будет исследовать себя.

sp_who2 'active'

проверяем значения функции CPUTime и DiskIO. Обратите внимание на SPID процесса, имеющего большое значение сравнительно.

kill {SPID value}

сначала выполните следующую команду:

sp_who2

после этого выполните приведенную ниже команду с SPID, которую вы получили сверху команду:

KILL {SPID value}

Это своего рода глупый ответ, но это работает надежно, по крайней мере в моем случае: В среде management studio, когда "отмена выполнения запроса" не останавливает запрос, я просто нажимаю, чтобы закрыть текущий документ sql. он спрашивает меня, хочу ли я отменить запрос, я говорю "да", и вот через несколько секунд он перестает выполняться. После этого он спрашивает меня, хочу ли я сохранить документ перед закрытием. На этом этапе я могу нажать кнопку Отмена, чтобы сохранить документ открытым и продолжить работу. Понятия не имею, что происходит за кулисами, но это, кажется, работает.

вы можете использовать сочетание клавиш ALT + перерыв остановить выполнение запроса. Однако это может быть не во всех случаях успешным.

если вы отмените и посмотрите, что работать

 sp_who2 'active'

(Монитор активности не будет доступен на старом sql server 2000 FYI)

найдите SPID, которого вы хотите убить, например, 81

Kill 81

запустить sp_who2 'active' снова и вы, вероятно, заметили, что он спит ... откат назад

чтобы получить статус снова запустить убийство

Kill 81 

тогда вы получите сообщение, как это

 SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.

по-видимому, на sql server 2008 r2 64bit, с длительным запросом из IIS kill spid, похоже, не работает, запрос просто перезапускается снова и снова. и это, кажется, повторное использование spid В. запрос вызывает sql server, чтобы взять как 35% cpu постоянно и повесить веб-сайт. Я предполагаю, что bc/ он не может отвечать на другие запросы для входа в систему

в моей части мой sql повесил трубку, когда я попытался закрыть его во время бесконечного запуска. Итак, что я сделал, я открываю свой диспетчер задач и завершаю задачу своим sql-запросом. Это остановит мой sql и перезапустит его.

простой ответ, Если красное поле " стоп "не работает, это попробовать нажать кнопки" Ctrl + Break " на клавиатуре.

Если вы используете SQL Server на Linux, есть приложение, которое вы можете добавить в свой системный трей под названием " killall" Просто нажмите на кнопку "killall", а затем нажмите на программу, которая поймана в петлю, и она завершит программу. Надеюсь, это поможет.

Я страдаю от того же самого с давних пор. Это особенно происходит, когда вы подключены к удаленному серверу(который может быть медленным), или у вас плохое сетевое соединение. Я сомневаюсь, что Microsoft знает, что такое правильный ответ.

но так как я пытался найти решение. Только 1 непрофессионал подход работал

  • Нажмите кнопку закрыть на вкладке запроса, от которого вы страдаете. Через некоторое время (если Microsoft не погорячился !!!) вы можете получить окно с просьбой об этом

" запрос в настоящее время выполняется. Вы хотите отменить запрос?"

  • нажмите на кнопку "Да"

  • через некоторое время он будет спрашивать, хотите ли вы сохранить этот запрос или нет?

  • нажмите на кнопку "Отмена"

и опубликуйте это, может быть, вы studio снова стабильны, чтобы выполнить ваш запрос.

что он делает в фоновом режиме отключение окна запроса с подключением. Поэтому для повторного запуска запроса потребуется время для повторного подключения удаленного сервера. Но поверьте мне, этот компромисс намного лучше, чем страдание от видения того таймера, который работает вечно.

PS: это работает для меня, спасибо, если работает для вас тоже. !!!

Comments

    Ничего не найдено.