Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 распознать блокировку через сообщение об ошибке ODBC  [new]
Лопух
Guest
Вот как это сделать? Т.е. вроде стандартная ситуация: в аппликухе нужно отреагировать на ошибку при запуске SQL-я и если это блокировка, то отреагировать так, а если что-то другое - то сяк. Вызываю SQLGetDiagRec и онa возвращает Sqlstate=42000 и NativeError=1222. Sqlstate=42000 - не показательно, оно может появиться и при синтактической ошибке. А NativeError=1222 ... можно ли на него положиться? Что оно во всех последующих версиях будет таким же и что все виды блокировок только 1222 возвращают?
15 авг 11, 18:14    [11122353]     Ответить | Цитировать Сообщить модератору
 Re: распознать блокировку через сообщение об ошибке ODBC  [new]
Glory
Member

Откуда:
Сообщений: 104751
Лопух
А NativeError=1222 ... можно ли на него положиться?

Поверьте, ошибка 1222 Lock request time out period exceeded. никак не может возникнуть при, например, отсутствии объекта. Потому что для отсутствия объекта есть ошибка со своим номером
15 авг 11, 18:21    [11122391]     Ответить | Цитировать Сообщить модератору
 Re: распознать блокировку через сообщение об ошибке ODBC  [new]
Glory
Member

Откуда:
Сообщений: 104751
Лопух
то все виды блокировок только 1222 возвращают?

1222 это истечение таймаута ожидания блокировки.
Собственно блокировки никогда не являлись ошибками
15 авг 11, 18:22    [11122408]     Ответить | Цитировать Сообщить модератору
 Re: распознать блокировку через сообщение об ошибке ODBC  [new]
Лопух
Guest
Glory
Лопух
то все виды блокировок только 1222 возвращают?

1222 это истечение таймаута ожидания блокировки.
Собственно блокировки никогда не являлись ошибками


Да, Вы совершенно правы, поэтому их и требуется отсеять от настоящих ошибок. Ведь SQLExecDirect возвращает -1 и в том и в другом случае. Я знаю, что 1222 это Lock request time out, но мой вопрос-то и был - насколько можно быть уверенным, что так будет всегда (насчет того что NO_DATA_FOUND останется 100 - я как-то уверен, хотя и этого вроде никто не обещал :-). А насчет блокировок мне смутно припоминается, что кроме Lock request time out было еще другое сообщение с другим номером, но тоже связанное с блокировками. Но может это дежавю...
15 авг 11, 18:36    [11122498]     Ответить | Цитировать Сообщить модератору
 Re: распознать блокировку через сообщение об ошибке ODBC  [new]
Glory
Member

Откуда:
Сообщений: 104751
Лопух
Я знаю, что 1222 это Lock request time out, но мой вопрос-то и был - насколько можно быть уверенным, что так будет всегда

https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=873461&msg=11122391
15 авг 11, 20:19    [11122944]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить