Я использую SQL Server 2008 и его студию управления. Я выполнил запрос, который дал много строк. Я попытался отменить его с помощью красной кнопки отмены, но он не останавливался последние 10 минут. Обычно он прекращается в течение 3 минут.
В чем может быть причина и как мне немедленно ее остановить?
sql
sql-server
sql-server-2008
sequel.learner
источник
источник
Ответы:
Отмена запроса происходит немедленно, при условии, что ваше внимание может достигнуть сервера и быть обработано. Запрос должен находиться в состоянии отмены, что почти всегда верно, за исключением случаев, когда вы выполняете определенные операции, такие как вызов веб-службы из SQLCLR. Если ваше внимание не может добраться до сервера, это обычно связано с перегрузкой планировщика .
Но если ваш запрос является частью транзакции, которую необходимо откатить, откат нельзя прервать. Если это занимает 10 минут, значит, нужно 10 минут, и вы ничего не можете с этим поделать. Даже перезапуск сервера не поможет, это только увеличит время запуска, поскольку восстановление должно завершить откат.
Чтобы ответить, какая конкретная причина относится к вашему делу, вам нужно будет исследовать себя.
источник
Проверьте значения в CPUTime и DiskIO . Обратите внимание на SPID процесса, имеющего сравнительно большое значение.
kill {SPID value}
источник
Сначала выполните следующую команду:
После этого выполните следующую команду с SPID, которую вы получили от команды выше:
KILL {SPID value}
источник
Это своего рода глупый ответ, но он работает надежно, по крайней мере, в моем случае: в студии управления, когда «Отменить выполнение запроса» не останавливает запрос, я просто щелкаю, чтобы закрыть текущий документ sql. он спрашивает меня, хочу ли я отменить запрос, я говорю «да», и вот через несколько секунд он перестает выполняться. После этого меня спрашивают, хочу ли я сохранить документ перед закрытием. На этом этапе я могу нажать кнопку «Отмена», чтобы оставить документ открытым и продолжить работу. Понятия не имею, что происходит за кулисами, но вроде работает.
источник
Если вы отмените и увидите этот запуск
(Монитор активности не будет доступен на старом 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.
источник
KILL {spid} WITH STATUSONLY
чтобы увидеть статусное сообщение.Вы можете использовать сочетание клавиш ALT+, Breakчтобы остановить выполнение запроса. Однако не во всех случаях это удается.
источник
--Find Session Id for respective all running queries SELECT text, getdate(),* FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle) ---Kill specific session kill 125
источник
очевидно, на sql server 2008 r2 64bit, с длительным запросом из IIS, kill spid, похоже, не работает, запрос просто перезапускается снова и снова. и, похоже, он повторно использует spid. запрос приводит к тому, что sql-сервер постоянно занимает около 35% процессора и зависает на веб-сайте. Я предполагаю, что bc / он не может ответить на другие запросы для входа в систему
источник
В моей части мой sql завис, когда я пытался закрыть его во время бесконечной работы. Итак, я открыл диспетчер задач и завершил задачу своим sql-запросом. Это остановило мой sql и перезапустило его.
источник
Простой ответ, если красное поле «стоп» не работает, это попробовать нажать кнопки «Ctrl + Break» на клавиатуре.
Если вы используете SQL Server в Linux, есть приложение, которое вы можете добавить в свою системную панель, под названием «killall». Просто нажмите кнопку «killall», а затем щелкните программу, которая попала в цикл, и она завершит выполнение программы. Надеюсь, это поможет.
источник
Я уже давно страдаю от одного и того же. Это особенно происходит, когда вы подключены к удаленному серверу (который может быть медленным) или у вас плохое сетевое соединение. Я сомневаюсь, что Microsoft знает правильный ответ.
Но раз уж я пытался найти решение. Работал только 1 непрофессиональный подход
«Запрос в настоящее время выполняется. Вы хотите отменить запрос?»
Нажмите "Да"
Через некоторое время он спросит, хотите ли вы сохранить этот запрос или нет?
Нажмите "Отмена"
И опубликуйте это, может быть, ваша студия снова стабильна, чтобы выполнить ваш запрос.
В фоновом режиме он отключает окно запроса с подключением. Поэтому для повторного выполнения запроса потребуется время для повторного подключения к удаленному серверу. Но поверьте мне, этот компромисс намного лучше, чем страдание от просмотра этого таймера, который работает вечно.
PS: Это работает для меня, Престижность, если работает и для вас. !!!
источник