|
|
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
Добрый времени суток Вам! Хотел бы задать такой смешной вопросик! У нас существует несколько комплексов отчётности, котрые берут данные от общих ресурсов! Так как расчёт идёт на общих ресурсах, то некий злой администратор отстреливает процедуру расчёта к примеру из некоего программного комплекса! При отстреле конечно пишется ошибка ct_connected() - error. Пользователь не знает этой ошибки и идёт материться к нам (бедным программистам)! Как отловить данную ошибку (типа dw.error() ... ) и вывести юзерам типа messagebox ("Внимание", 'Вас отстрелили от сервера обращайтесь к админу!'). Pb -7, Pb-9, Sybase -12.5. Зараннее всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 15:11 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
А показать примерчик как вызывается эта процедура расчета можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 19:59 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
а перед ретрайвом делать маленький селект и проверку на ошибку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 20:13 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
А если это не ретрайв, а RPC и ошибка происходит после того как его запустили уже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 20:18 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
тогда смотреть что эта ошибка - ct_connect ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 20:29 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
Процедура вызывается по разному, в 9 -ке процедура вызывается при ретриве datawindow. Просто для формирования отчётности (например 402 форма) отчёт делается минут 10, если в это время серверу плохо (перегружен расчётами или tempdb - засрал..-сь), то начинается отстрел процедур (kill process). Процедура может вызываться просто через exec proc_253 using sql_tran - к примеру на 7 -ке; Неужели с этим никто не сталкивался! Ошибки типа - Aplication aplay и тому подобное! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 23:34 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
Да ошибка происходитв основном во время долгого retrive() - когда убивается процесс! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 23:41 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
Наверно должна быть функция обработки ошибок, а в ней для Oracle примерно такой текст CHOOSE CASE p_sqldbcode ......... ....... CASE 60 MessageBox(txt,'Операция прервана. ПЕРЕГРУЗКА СИСТЕМЫ') goto m_txt CASE 257,1034,1033,1035,1089,1090,12500 exit_programm = NOT error.start_post error.start_post=false error.error_oracle=true error.last_errtext=p_sqlerrtext MessageBox('','БД УКЭР Остановлена~nт.хх-хх-хх Петров Михаил') IF exit_programm THEN HALT CLOSE ELSE OpenWithParm(w_error_oracle,p_sqldbcode) RETURN true END IF CASE 942 MessageBox(txt,'У Вас нет прав до этой информации') goto m_txt CASE 1012 error.start_post=false error.error_oracle=true error.last_errtext=p_sqlerrtext MessageBox(txt,'Ваш ПРОЦЕСС убили!') OpenWithParm(w_error_oracle,p_sqldbcode) RETURN true CASE 1013 MessageBox(txt,'Операция прервана') RETURN true CASE 1031 MessageBox(txt,'У Вас нет прав на выполнение такой операции.') RETURN true CASE 1400 MessageBox(txt,'Не все ОБЯЗАТЕЛЬНЫЕ ПОЛЯ заполнены') goto m_txt CASE 1401 MessageBox(txt,'Текст превысил размеры поля') goto m_txt CASE 1653 err_txt='Нет места в БАЗЕ' CASE 1756 MessageBox(txt,'Из строки УБРАТЬ КАВЫЧКИ') goto m_txt CASE 2019 MessageBox(txt,'Времено отсутствует соединение с удаленной базой данных.~nПовторите попытку.') RETURN true CASE 980,2068 MessageBox(txt,'Ошибка УДАЛЕННОГО СЕРВЕРА.~nОшибка зафиксирована. Будем разбираться.') goto m_txt CASE 3113,3114,12203 // обрыв с Базой error.start_post=false error.error_oracle=true error.last_errtext=p_sqlerrtext OpenWithParm(w_error_oracle,p_sqldbcode) RETURN true CASE 12569,12571 err_txt='Ошибка в линии связи' CASE 20500 err_txt=p_sqlerrtext CASE ELSE err_txt='Ошибка '+'~013~010SQLCode='+string(p_sqlcode)+& '~013~010SQLDBCode='+String(p_sqldbcode)+ "~013~010~013~010"+p_sqlerrtext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2006, 13:57 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
>To SergeyGor! Oracle он более универсален, достаточно выводить sqlerrortext!А вот Sybase похуже, ладно буду копаться в событии dberror. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2006, 10:51 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
по идее должно быть это сообщение в dberror есть все параметры транзакции так что проблем не вижу Connection was terminated SQLCODE -308 (должно быть в параметре SQLDBCode транзакции или dberror) Constant SQLE_CONNECTION_TERMINATED SQLSTATE 40W07 Sybase error code 4224 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 11:04 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
Это понятно! Что необходимо использовать CHOOSE CASE sqldbcode... - это понятно, вот только где бы посмотреть, коды ошибок! Например 1. База зависла и не отвечает. 2. Отстрел процедуры расчёта (kiled proces). 3. Отвалилась сеть (физические неполадки во время ретрива) - поверьте и такое бывает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:46 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
boogimanЭто понятно! Что необходимо использовать CHOOSE CASE sqldbcode... - это понятно, вот только где бы посмотреть, коды ошибок! Например 1. База зависла и не отвечает. 2. Отстрел процедуры расчёта (kiled proces). 3. Отвалилась сеть (физические неполадки во время ретрива) - поверьте и такое бывает! Я думаю в руководстве к соответствующей БД. Но можно обойтись и без этого. Отстрелили процедуру - смотрите код возврата. Вытащили кабель из сети - смотрите код возврата, нажали reset на сервере (ну если сервер тестовый) и смотрите код возврата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:38 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
>To Локшин Марк! Марк, не ожидал от Вас такое услышать, я конечно верю в эмпирический метод исследований (его помнится Томас Эдисон тоже уважал), но я думал - вы их и так знаете! Типа разбуди Вас ночью, а вы сразу sqldbcode = 176 - это отстрел от базы понимаешь! Ну ладно попробуем о результатах как нибудь отспешу! Всё равно спасибo! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 16:34 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
boogimanМарк, не ожидал от Вас такое услышать, я конечно верю в эмпирический метод исследований (его помнится Томас Эдисон тоже уважал), но я думал - вы их и так знаете! Типа разбуди Вас ночью, а вы сразу sqldbcode = 176 - это отстрел от базы понимаешь! Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 17:52 |
|
||
|
Отловить отстрел процедуры от базы!?
|
|||
|---|---|---|---|
|
#18+
> T0 Локшин Марк! Сорри я почему то думал,что вы с субд Sybase тоже работаете! Ещё раз сорри! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 19:02 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=75&tid=1337939]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 304ms |

| 0 / 0 |
