Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Вниз

Как отловить сообщения о ходе выполнения ХП (на MSSQL)   Найти похожие ветки 

 
Layner ©   (2006-07-18 08:37) [0]

ХП выполняется с запуска из программы, в отдельном потоке. Программа не "замораживается", все хорошо. ХП может работать и минуту и 2 и 3... Можно ли отлавливать процент выполнения ХП любым способом? (Для отображения индикатора выполнения) Хоть самым не красивым способом :)
Как вариант, я могу слать из ХП

PRINT "step1"
.....
PRINT "step2"
.....
PRINT "step3"
.....
PRINT "step4"
.....
PRINT "step5"
.....

и отлавливать это в программе?


 
Медведъ   (2006-07-18 08:57) [1]

в табличку пиши, из другого соединения опрашивай ее периодически


 
paul_k ©   (2006-07-18 09:28) [2]

print не отловишь. Сообщение об ошибке можешь попробовать.
Но от лукавого это все. напиши "выполняется обработка сервером" и жди...


 
Stanislav ©   (2006-07-18 09:55) [3]

У ADOConnection есть событие onInfomessage.


 
Desdechado ©   (2006-07-18 10:49) [4]

Медведъ   (18.07.06 08:57) [1]
Ну-ну...
А как в многопользовательской среде?
А как с транзакциями и видимостью данных быть?
А как быть в случае прерывания выполнения?


 
sniknik ©   (2006-07-18 11:07) [5]

> print не отловишь. Сообщение об ошибке можешь попробовать.
print это та же ошибка, только приоритетом пониже. "ловится"/читается аналогично (если читать конечно из свойств обьекта, а не ждать ексепта возбуждаемого самой дельфей, вот тут уже разница, с низким приоритетом дельфя игнорирует).

> и отлавливать это в программе?
то чего ждеш не получиш, максимум получиш все мессаги скопом по завершении отработки процедуры...

если тебе нужен прогресс то выбирать надо методы не зависимые от выполнения самого запроса.
например написать внешнюю процедуру с посылкой пакета по TCP/UDP/IP, ее и вызывать внутри (или можно NET SEND ... вместо процедуры использовать).
или установить мелкософский MSSQL-левский "месенжер" (есть такой, дополнительная служба ставится... как работает не в курсе)
или ... т.д. придумывай.

но вообще непонятно упорное желание многих здесь затормозить выполнение вместо оптимизации... самые экзотические способы выдумывают непонятно только зачем...


 
Медведъ   (2006-07-18 11:13) [6]

>Desdechado ©   (18.07.06 10:49) [4]
1. @@SPID
2. у автора спроси, не знаю какие у него там транзакции
3. DELETE WHERE SPID=@@SPID в начале процедуры

PS
я не утверждаю что это хорошее решение, но если сильно хочется то самое простое


 
Desdechado ©   (2006-07-18 11:20) [7]

Медведъ   (18.07.06 11:13) [6]
По пункту 2. Не знаю, есть ли в скуле понятие автономной транзакции, чтобы данные, записанные в таблицу были доступны в другой транзакции до окончания первой.
Уровень изоляции подключения ради этого я бы менять не стал.
Поэтому и акцентировал внимание на проблеме.

> непонятно упорное желание вместо оптимизации
Оптимизация - необходимая вещь. Но иногда (очень редко) бывают ситуации, когда требуется сильно перелопатить БД для отчета, а это может занять даже в заоптимизированном варианте долгое время.


 
Stanislav ©   (2006-07-18 11:28) [8]

Desdechado ©   (18.07.06 11:20) [7]
Если он собирается печатать print step 1, то транзакция скорее всего будет завершена.


 
sniknik ©   (2006-07-18 11:38) [9]

Desdechado ©   (18.07.06 11:20) [7]
ага, и это и так долгое время мы пытаемся сделать еще дольше... и намного.
к примеру в 1С 8.0 есть такая штука (прогрессбар) встроеная так вот если его включать то отчет строится в десятки (а то и в сотни) раз медленнее, как и все остальное. т.е. если без него минута, а если хочется видеть прогресс то час... круто.
(может это у них и можно исправить, поменьше разброс сделать (например периоды опроса побольше поставить), не знаю я не 1С-ник.)

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
15-1156810340
бегинка
2006-08-29 04:12
2006.09.17
делфи


2-1157067421
Adios
2006-09-01 03:37
2006.09.17
Как сделать инспектор свойств?


15-1156999845
V-A-V
2006-08-31 08:50
2006.09.17
Сервис пак для Delphi 6


2-1156587361
small
2006-08-26 14:16
2006.09.17
фокус в TstringGrid


3-1152249567
oji
2006-07-07 09:19
2006.09.17
Копия подчиненных записей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский