|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Есть большая табличка на сервере (точнее не большая таблица, а долгий запрос), подгружаю ее на клиент. dAdapt.Fill(table); // эта строка отрабатывает минут 5 Загрузка идет в фоновом режиме. (backgroundworker) Хотелось бы реализовать отмену этого действия (прекратить загруку). Как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 15:15 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
virus_system Хотелось бы реализовать отмену этого действия (прекратить загруку). Как это сделать? По идее - никак. Сервер, приняв запрос, уходит сам в себя и до того пока он не розродится - ни на какие внешние раздражители он не реагирует. Некоторые консоли под видом "остановки/прекращения" выполнения - тупо делают disconnect. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 15:46 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Ex_Soft virus_system Хотелось бы реализовать отмену этого действия (прекратить загруку). Как это сделать? По идее - никак. Сервер, приняв запрос, уходит сам в себя и до того пока он не розродится - ни на какие внешние раздражители он не реагирует. Некоторые консоли под видом "остановки/прекращения" выполнения - тупо делают disconnect. _________________ "Helo, word!" - 17 errors 56 warnings Ну например у того же MSSQL Management Studio есть же кнопка остановить выполнение запроса. И он его останавливает... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 15:53 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
virus_system например у того же MSSQL Management Studio есть же кнопка остановить выполнение запроса. И он его останавливает... 1. Ex_Soft Некоторые консоли под видом "остановки/прекращения" выполнения - тупо делают disconnect. [/quote] После остановки что с процессами на серванте? spid тот же, что и был до остановки? Для того, чтобы расставить все точки над i ставим http://www.wireshark.org/download.html]wireshark и смотрим, что Ваша MSSQL Management Studio делает для остановки... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:11 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Ex_Soft После остановки что с процессами на серванте? spid тот же, что и был до остановки? После остановки в Management Studio? ID такой же ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:20 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
virus_system После остановки в Management Studio? ID такой же Ну... Тогда Ex_Soft ставим wireshark и смотрим, что Ваша MSSQL Management Studio делает для остановки... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:22 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Логика такая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
P.S. Если сам атомарный запрос нужно отменить - то нужно рвать/восстанавливать коннект. Либо курить асинхронные соединения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:23 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
МСУ, атомарный? это я как понимаю один запрос в данной транзации. У меня он один... типа select * from table1. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:26 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
virus_systemМСУ, атомарный? это я как понимаю один запрос в данной транзации. У меня он один... типа select * from table1. Да, всё верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:29 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Вот еще: SqlCommand.Cancel ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:32 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
МСУЛогика такая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Прошу прощения, но не понял этого? Чем мне это поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:34 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
virus_systemПрошу прощения, но не понял этого? Чем мне это поможет В Вашем случае - ничем, забудьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 16:43 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
МСУ, sqlcommand.Cancel в принципе вариант, но при вызове метода Fill, а после метода Cancel. Возникает исключение. {"При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы. Операция отменена пользователем."} Это нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 08:37 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
МСУЛогика такая: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
P.S. Если сам атомарный запрос нужно отменить - то нужно рвать/восстанавливать коннект. Либо курить асинхронные соединения. МСУ, прошу мне так же помочь и немного пояснить У меня один запрос на селект (20 мин) но fill виснет (при отмене), fill идет в отдельном потоке и поток этот не убить; коннект, комманд отменял, но fill как работает так и работает (oracle databasecontrol показывает) Выше ты привел sql запрос так? в тело бегин я ставлю sql команду в while я ставлю признак отмены? но как признак отмены я передам в уже исполняемый fill Очень прошу помочь мне, третий день не решить эту проблему. Поясни пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2011, 20:44 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Вот задача в один один со мной. http://www.sql.ru/forum/actualthread.aspx?tid=349211&hl=%f3%e1%e8%f2%fc%20%ef%ee%f2%ee%ea ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2011, 20:47 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Посмотрел еще на форуме надо идти к ocibreak Никто не подскажет как из проекта winfoms.net4 подступится к oci ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 00:15 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
авторdAdapt.Fill(table); // эта строка отрабатывает минут 5 Сколько у вас записей в таблице... ? Вы точно уверены что пользователь желает увидеть их все? Кстати, что мешает использовать, например, DataReader вместо DataAdapter? В цикле чтения спокойно сможете прервать... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 00:23 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
P.S. Исполните свой запрос через MS SMS с просмотром плана запроса, и посмотрите, можно ли увеличить скорость выполнения запроса... Sql Managment studio кстати иногда неплохо советует по созданию индексов... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 00:30 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Lelouch, Спасибо за ответ. У меня дело обстоит так, я написал сложный sql (много вложенных select, то есть у меня не как в обычном select используется таблица, а вместо таблицы стоит свой селект), запрос большой -192 столбца на 40 тыс строк выборки данных из разных таблиц 2млн.-10 млн. строк. Каждый из 192 столбцов рассчитывается (то есть два селекта: одно минус другое и получается один из 192 столбцов), то есть фактически в этом запрос оракл исполняет 192*2 select а потом привязывает все 192 столбца к одному соответствию. (правому боковику). То есть написал запрос по выборки всей финансовой информации по 40 тыс.дебитор в одном скл запросе.(финансовая информация хранится в разных оракловских таблицах). (конечно можно написать процедуру, чтобы данный расчет произошел ночью писался в таблицу и потом я бы работал с data.reader как чтение, но пока прав на создание таблиц в хранилище у меня нет) Таким образом этот select работает в оракле 20 мин (смотрел в pl/sql --18 Мин сам запрос и порядка еще 2 мин на загрузку данных 192*40 тыс. строк). Так вот мне ни как не выйти из fill если он запущен, то есть смотрю datacontrol все равно процесс sql идет. Процесс в оракл останавливается если я жму стоп в студии))), А програмно ни abort поток, ни application.exit не убивает запущенный процесс в оракле. Может никто не подскажет как мне тут быть. ПС Про value запроса я вообще молчу, фантастическая)))) Тут читаю что надо как oci, но пока не очень представлю как подступится из winforms. Вот и проблема что если методом fill я запускаю этот запрос, то потом я пока ничто не нашел чтобы убить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 01:09 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
И продолжу, что отработанный select из dataset я скидываю в excel, оформляю и у меня готовый отчет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 01:14 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Блин. Я же написал. Заполняйте не DataAdapter'ом, а DataReader'ом... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 10:22 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Спасибо, сейчас попробую, отпишусь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 11:57 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
SPB2011-2010Спасибо, сейчас попробую, отпишусь. Ну я бы сделал примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 12:31 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 12:35 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Lelouch, Сейчас буду разбиратся с тем кодом что ты написал. спасибо большое!!!!!! за помощь. (реально уже убываю на это четвертый день, а на форуме четко не написано как в этом случае быть (но проблема бывает у многих). Вот к твоему посту попробывал сделать задачу datareaderom (в классическом варианте по книге Сеппа). Не получилось, ведь проблема не втом чтобы превать dataread когда он читает данные из оракл, когда тот уже сгенерировал запрос, а в том чтобы отменить сам запрос когда он рассчитывается в оракл (у меня по времени 20 мин), а у меня получается что он все считается в оркал даже при выходе из формы (в том числе и поток.abort---treadstate.abortrequested--ждет окончание процесса в оракл). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 13:04 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
то что я написал должно прерывать запрос, если он еще идет, или чтение DataReader'ом, если запрос уже выполнился. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 13:41 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Lelouch, Сейчас сижу разбираюсь, а то что в oracle ( а так же oledb) постащике нет endexcutereader и beginexcutereader, влияет на результат? стопроцентно разберусь, мне еще немного сложно так как я на vb.net, но в конверте c#tovb.net решил вопрос, а вместо dynamic поставил в vb.net --object, нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 14:01 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
уже почти скоро начну понимать С#))) думаю месяцев через 6 начну писать на нем, просто vb -так родной со школы ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 14:05 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Lelouch, Вот какая проблема, что oraclecommand и oledbcommand не поддерживают метод endreader и beginreader, async данные события есть только в SQL клиенте---в моих провайдерах(oracle, oledb) этого нет. Я читал на форуме что прервать коннект можно либо через oci(oracle call interface), либо черех ассинхронные операции--но по моему oracle, oledb поставщик их не поддерживает/ Или можно как то это сделать в oledb. Буду пробывать, не подскажешь куда мне двигатся или я не прав? (а list, ты используешь вместо дата сет---так быстрее) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 17:19 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
SPB2011-2010Lelouch, (а list, ты используешь вместо дата сет---так быстрее) то есть вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 17:20 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
Может кто подскажет,(продолжаю долбить это) так если запрос, программно не отменить на оракл (у меня не получается)(ни поток.аборт, ни коннект.close) а вот если закрывать программу из диспетчера задач, либо стоп в студии...то запрос в datacontrol(оракл) отменятся. Может как-то подскажет можно ли перехватить это событие, ведь тут процесс в оракл останавливается, а при даже application.exit в моей форме нет. Буду очень признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2011, 21:19 |
|
Отмена выполнения запроса
|
|||
---|---|---|---|
#18+
SPB2011-2010, по поводу остановки выполнения Вам ничего не посоветую, а вот по запросу самому не проще ли склепать вьюху и выбирать уже из нее порциями по 1000 записей например. пс. в дополнение к книге сеппа могу порекомендовать Гамильтон - ADO.NET сборник рецептов для профессионалов. Много полезного. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2011, 03:58 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1350498]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 157ms |
0 / 0 |