Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отследить ошибки sql при ретриве / 16 сообщений из 16, страница 1 из 1
05.10.2010, 11:38
    #36881865
noeser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Проблема такая: в программе отрабатывает dw1.retrieve() и возникает ошибка БД с номером 1222. Как отловить эту ошибку? Пробовала через sqlca, sqlcode возвращает 0. Может, можно отловить через pfc, но я в нем плохо ориентируюсь. Подскажите что-нибудь, пожалуйста..

Тапками сильно не бейте за такой вопрос, а объясните что ды как.
...
Рейтинг: 0 / 0
05.10.2010, 11:58
    #36881941
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
noeserПроблема такая: в программе отрабатывает dw1.retrieve() и возникает ошибка БД с номером 1222. Как отловить эту ошибку? Пробовала через sqlca, sqlcode возвращает 0. Может, можно отловить через pfc, но я в нем плохо ориентируюсь. Подскажите что-нибудь, пожалуйста..

Тапками сильно не бейте за такой вопрос, а объясните что ды как.
В DataWindow/DataStore ошибки при работе с БД нужно отслеживать на событии DBError.
...
Рейтинг: 0 / 0
05.10.2010, 12:16
    #36882013
noeser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Локшин Марк, они и отслеживаются там. И выскакивает оттуда же окошко с ошибкой.

Но как мне выловить после ретрива, что это произошло..

Т.е. есть текст в программе:

dw1.retrieve()

и после этого нужно проверить, случилась ли эта ошибка или нет. Через свою глобальную переменную, значение которой присваивать в событии dberror? Может, как-то ещё можно?
...
Рейтинг: 0 / 0
05.10.2010, 12:54
    #36882144
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
noeserdw1.retrieve()

и после этого нужно проверить, случилась ли эта ошибка или нет. Через свою глобальную переменную, значение которой присваивать в событии dberror? Может, как-то ещё можно?
Не через глобальную, а через instance.
В предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения.
...
Рейтинг: 0 / 0
05.10.2010, 13:20
    #36882257
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Anatoly MoskovskyВ предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения.
Или подправить на DBError переменные объекта-транзакции DataWindow.
...
Рейтинг: 0 / 0
05.10.2010, 14:38
    #36882551
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Локшин МаркИли подправить на DBError переменные объекта-транзакции DataWindow.
И потом всю жизнь переучивать всех программеров которые уже знают что объект-транзакция не изменяется при retrieve() :)
...
Рейтинг: 0 / 0
06.10.2010, 10:19
    #36884048
noeser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Anatoly Moskovsky
Не через глобальную, а через instance.
В предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения.


Спасибо. А ещё вопрос: может ли быть так, что ошибка произошла и показалось окошко с ошибкой, а ретрив вернул какие-то строки (например, блокировка строк каких-то была в БД)?

Просто я пыталась вручную залочить строки и сделать select with (nolock) и у меня строки все отображались без ошибок, даже залоченные, а у пользователя, как он говорит, произошла ошибка и выдалась неполная информация в том же dw.
...
Рейтинг: 0 / 0
06.10.2010, 10:42
    #36884116
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
noeserПросто я пыталась вручную залочить строки и сделать select with (nolock) и у меня строки все отображались без ошибок, даже залоченные, а у пользователя, как он говорит, произошла ошибка и выдалась неполная информация в том же dw.
А какую связь между собой имеют "залоченные" строки и ошибка в запросе?
...
Рейтинг: 0 / 0
06.10.2010, 10:47
    #36884133
noeser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Локшин Марк, у юзера такая проблема: делает он ретрив dw, выскакивает ошибка 1222 (Lock request time out period exceeded). Возможно ли, что dw в этом случае вернет какие-то строки?
...
Рейтинг: 0 / 0
06.10.2010, 10:58
    #36884172
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
noeserЛокшин Марк, у юзера такая проблема: делает он ретрив dw, выскакивает ошибка 1222 (Lock request time out period exceeded). Возможно ли, что dw в этом случае вернет какие-то строки?
Так это он не дождался снятия блокировки. Значит ваше приложение устанавливает где-то SET LOCK_TIMEOUT, т.к. по умолчанию приложение бы ждало снятия блокировки. Проверять это SELECT WITH (NOLOCK), по меньшей мере странно. Ищите то место, где у Вас не снимается блокировка (если нет какого-то ооочень длинного рассчета). Вернет ли в таком случае dw какие-то данные - не знаю, нужно пробовать.
...
Рейтинг: 0 / 0
06.10.2010, 11:34
    #36884290
noeser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Локшин Марк, видимо я не так изъясняюсь.

Рассказываю причем тут select with (nolock): просто я всегда полагала, что если делать select with (nolock), то все данные вытащатся вне зависимости от того заблокированы они или нет.
А видимо вытаскиваются в dw только те данные, которые сейчас не заблочены.
...
Рейтинг: 0 / 0
06.10.2010, 11:37
    #36884296
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
noeserЛокшин Марк, видимо я не так изъясняюсь.

Рассказываю причем тут select with (nolock): просто я всегда полагала, что если делать select with (nolock), то все данные вытащатся вне зависимости от того заблокированы они или нет.
А видимо вытаскиваются в dw только те данные, которые сейчас не заблочены.
А чего тогда удивляться, что при select with (nolock) вытащились все данные?
...
Рейтинг: 0 / 0
06.10.2010, 15:51
    #36884837
noeser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Локшин Марк, у меня-то они вытащились, а юзера почему-то частично.
...
Рейтинг: 0 / 0
06.10.2010, 16:04
    #36884873
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
noeserЛокшин Марк, у меня-то они вытащились, а юзера почему-то частично.
Потому, что select with nolock игнорирует наложенные блокировки. Чего тут не понятного? У пользователя запрос без nolock?
...
Рейтинг: 0 / 0
06.10.2010, 16:59
    #36885062
noeser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
Локшин Марк, с nolock.
...
Рейтинг: 0 / 0
06.10.2010, 17:04
    #36885089
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить ошибки sql при ретриве
noeserЛокшин Марк, с nolock.
Значит у клиента были блокировки не на строки, а на схему данных.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отследить ошибки sql при ретриве / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]