MS SQL Server: Как прервать выполнение stored proc

User avatar
Win32nipuh
Уже с Приветом
Posts: 2489
Joined: 04 Feb 2002 10:01
Location: Слава Україні!

MS SQL Server: Как прервать выполнение stored proc

Post by Win32nipuh »

Есть приложение на Visual Studio NET, оно через ОЛЕДБ работает с БД.
В нем диалог для поиска: кнопка старт и кнопка стоп.
По кнопке старт запускается ХП, котрая может выполняться приличное время, в зависимости от условий поиска.
Так вот: как по клику на "стоп" - прервать выполнение процедуры? Или остатется "ждать конца" ? :-)
User avatar
acd32
Новичок
Posts: 81
Joined: 17 Sep 2002 21:19
Location: San Diego

Post by acd32 »

SQLServer Enterprise Manager > Current Activity > Process Info > Properties of Process > Kill
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

1. С клиента как то заканселить запрос можно
2. Когда это делаешь сервер само канселиние происходит иногда сразу а иногда долго
Долго например если чтото связанное с Linked server который не отвечает (видимо все таки сервер выэидает таймауты)
С XP (Extended procedure) которая выполняется долго не встречался так что сказать не могу
Но я бы не рекомендовал бы такие использовать...
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
IsterGray
Новичок
Posts: 38
Joined: 07 Oct 2003 18:41

Re: MS SQL Server: Как прервать выполнение stored proc

Post by IsterGray »

Win32nipuh wrote:Есть приложение на Visual Studio NET, оно через ОЛЕДБ работает с БД.
В нем диалог для поиска: кнопка старт и кнопка стоп.
По кнопке старт запускается ХП, котрая может выполняться приличное время, в зависимости от условий поиска.
Так вот: как по клику на "стоп" - прервать выполнение процедуры? Или остатется "ждать конца" ? :-)


запусти процедуру как отдельную thread и сними эту thread кнопкой Stop в случае необходимости.
User avatar
Win32nipuh
Уже с Приветом
Posts: 2489
Joined: 04 Feb 2002 10:01
Location: Слава Україні!

Re: MS SQL Server: Как прервать выполнение stored proc

Post by Win32nipuh »

IsterGray wrote:запусти процедуру как отдельную thread и сними эту thread кнопкой Stop в случае необходимости.


В этом случае снимется thread в приложении, а процесс на сервере?...
User avatar
Win32nipuh
Уже с Приветом
Posts: 2489
Joined: 04 Feb 2002 10:01
Location: Слава Україні!

Post by Win32nipuh »

Dmitry67 wrote:1. С клиента как то заканселить запрос можно
2. Когда это делаешь сервер само канселиние происходит иногда сразу а иногда долго
Долго например если чтото связанное с Linked server который не отвечает (видимо все таки сервер выэидает таймауты)
С XP (Extended procedure) которая выполняется долго не встречался так что сказать не могу
Но я бы не рекомендовал бы такие использовать...


Как снять через ОЛЕДБ хотя бы запрос? может процедура аналогично...
User avatar
IsterGray
Новичок
Posts: 38
Joined: 07 Oct 2003 18:41

Re: MS SQL Server: Как прервать выполнение stored proc

Post by IsterGray »

Win32nipuh wrote:
IsterGray wrote:запусти процедуру как отдельную thread и сними эту thread кнопкой Stop в случае необходимости.


В этом случае снимется thread в приложении, а процесс на сервере?...


Процесс на сервере отработает в холостую и вернется в никуда - это в худшем случае. В лучшем - ODBC driver при разрушении снимет запрос сам.
В общем надо поиграть с этим.
User avatar
roadman
Уже с Приветом
Posts: 707
Joined: 12 Mar 2003 22:29
Location: Moscow->Bay Area, CA

Post by roadman »

Я делал так:
Выполнял команды из отдельного thread, что бы пользователь всегда мог отменить команду.

ODBC - SQLCancel
OLE DB ICommand->Cancel

О результате окончания выполнения асинхронной команды оповещал пользователя через events/callbacks
User avatar
YellowMan
Уже с Приветом
Posts: 1099
Joined: 30 Sep 1999 09:01
Location: Bryansk,RUSSIA >> Dublin, Ireland

Post by YellowMan »

А что мешает запомнить SPID процесса в клиенте, потом открыть новое соединение и сказать ему Kill ? После этого про sp можно забыть - конечно она еще может повисеть какое-то время на сервере, чтобы например, сделать rollback, но рано или поздно убъется.
Удачи@С.Смирнов

Return to “Вопросы и новости IT”