|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Проблема такая: в программе отрабатывает dw1.retrieve() и возникает ошибка БД с номером 1222. Как отловить эту ошибку? Пробовала через sqlca, sqlcode возвращает 0. Может, можно отловить через pfc, но я в нем плохо ориентируюсь. Подскажите что-нибудь, пожалуйста.. Тапками сильно не бейте за такой вопрос, а объясните что ды как. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2010, 11:38 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
noeserПроблема такая: в программе отрабатывает dw1.retrieve() и возникает ошибка БД с номером 1222. Как отловить эту ошибку? Пробовала через sqlca, sqlcode возвращает 0. Может, можно отловить через pfc, но я в нем плохо ориентируюсь. Подскажите что-нибудь, пожалуйста.. Тапками сильно не бейте за такой вопрос, а объясните что ды как. В DataWindow/DataStore ошибки при работе с БД нужно отслеживать на событии DBError. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2010, 11:58 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Локшин Марк, они и отслеживаются там. И выскакивает оттуда же окошко с ошибкой. Но как мне выловить после ретрива, что это произошло.. Т.е. есть текст в программе: dw1.retrieve() и после этого нужно проверить, случилась ли эта ошибка или нет. Через свою глобальную переменную, значение которой присваивать в событии dberror? Может, как-то ещё можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2010, 12:16 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
noeserdw1.retrieve() и после этого нужно проверить, случилась ли эта ошибка или нет. Через свою глобальную переменную, значение которой присваивать в событии dberror? Может, как-то ещё можно? Не через глобальную, а через instance. В предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2010, 12:54 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyВ предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения. Или подправить на DBError переменные объекта-транзакции DataWindow. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2010, 13:20 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Локшин МаркИли подправить на DBError переменные объекта-транзакции DataWindow. И потом всю жизнь переучивать всех программеров которые уже знают что объект-транзакция не изменяется при retrieve() :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2010, 14:38 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Не через глобальную, а через instance. В предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения. Спасибо. А ещё вопрос: может ли быть так, что ошибка произошла и показалось окошко с ошибкой, а ретрив вернул какие-то строки (например, блокировка строк каких-то была в БД)? Просто я пыталась вручную залочить строки и сделать select with (nolock) и у меня строки все отображались без ошибок, даже залоченные, а у пользователя, как он говорит, произошла ошибка и выдалась неполная информация в том же dw. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 10:19 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
noeserПросто я пыталась вручную залочить строки и сделать select with (nolock) и у меня строки все отображались без ошибок, даже залоченные, а у пользователя, как он говорит, произошла ошибка и выдалась неполная информация в том же dw. А какую связь между собой имеют "залоченные" строки и ошибка в запросе? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 10:42 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Локшин Марк, у юзера такая проблема: делает он ретрив dw, выскакивает ошибка 1222 (Lock request time out period exceeded). Возможно ли, что dw в этом случае вернет какие-то строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 10:47 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
noeserЛокшин Марк, у юзера такая проблема: делает он ретрив dw, выскакивает ошибка 1222 (Lock request time out period exceeded). Возможно ли, что dw в этом случае вернет какие-то строки? Так это он не дождался снятия блокировки. Значит ваше приложение устанавливает где-то SET LOCK_TIMEOUT, т.к. по умолчанию приложение бы ждало снятия блокировки. Проверять это SELECT WITH (NOLOCK), по меньшей мере странно. Ищите то место, где у Вас не снимается блокировка (если нет какого-то ооочень длинного рассчета). Вернет ли в таком случае dw какие-то данные - не знаю, нужно пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 10:58 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Локшин Марк, видимо я не так изъясняюсь. Рассказываю причем тут select with (nolock): просто я всегда полагала, что если делать select with (nolock), то все данные вытащатся вне зависимости от того заблокированы они или нет. А видимо вытаскиваются в dw только те данные, которые сейчас не заблочены. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 11:34 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
noeserЛокшин Марк, видимо я не так изъясняюсь. Рассказываю причем тут select with (nolock): просто я всегда полагала, что если делать select with (nolock), то все данные вытащатся вне зависимости от того заблокированы они или нет. А видимо вытаскиваются в dw только те данные, которые сейчас не заблочены. А чего тогда удивляться, что при select with (nolock) вытащились все данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 11:37 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Локшин Марк, у меня-то они вытащились, а юзера почему-то частично. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 15:51 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
noeserЛокшин Марк, у меня-то они вытащились, а юзера почему-то частично. Потому, что select with nolock игнорирует наложенные блокировки. Чего тут не понятного? У пользователя запрос без nolock? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 16:04 |
|
Как отследить ошибки sql при ретриве
|
|||
---|---|---|---|
#18+
Локшин Марк, с nolock. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 16:59 |
|
|
start [/forum/topic.php?fid=15&msg=36884296&tid=1335859]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
143ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 234ms |
0 / 0 |