|
|
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
SQL Anywhere 10 10.0.1.3685 (EBF были и другие, но проблема не исчезает) есть в базе ивенты, которые время от времени надо обновлять посредством скрипта (много баз, поэтому и скрипт) примерно следующего содержания: *** begin DROP EVENT "auto_nightly"; exception when others then end; CREATE EVENT "auto_nightly" HANDLER BEGIN while (exists (select 1 from dbo.sa_conn_info() i where (i.DBNumber=connection_property('DBNumber')) and (i.name like '%_backup_%' or i.name='auto_daily' or i.name like 'auto_create_%')) ) loop WAITFOR DELAY '00:01:00'; end loop; END; *** после применения этого скрипта на некоторых базах иногда при выполнении данного ивента в лог вылезает ошибка "caused SQLSTATE '52003' Column 'DBNumber' not found" ну и ивент останавливается :( лечится так: открыть ивент "auto_nightly" сделать пустое изменения (например поставить enter между любыми строками) и сохранить. после этого всё начинает работать. НО ЭТО НЕ ДЕЛО :( скажите, кто-нибудь с подобным сталкивался? как лечили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2008, 12:38 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
diallerесть в базе ивенты, которые время от времени надо обновлять посредством скрипта (много баз, поэтому и скрипт)На самом деле, надо всегда все изменения в базе делать скриптами. И не потому что баз много, а потому что изменения в скриптах отслеживать проще и при нужде восстанавливать базу легче. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. diallerпосле применения этого скрипта на некоторых базах иногда при выполнении данного ивента в лог вылезает ошибка "caused SQLSTATE '52003' Column 'DBNumber' not found" ну и ивент останавливается :(Событие может запускаться и при отсутствии активных коннектов. А в этом случае функция connection_property() теряет смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2008, 17:55 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
еще стоило-бы посмотреть что возвращает dbo.sa_conn_info() если коннектов нет ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2008, 17:57 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
с новым годомеще стоило-бы посмотреть что возвращает dbo.sa_conn_info() если коннектов нет ...Уже смотрел :) Пустой резалтсет оно возвращает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2008, 18:01 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
White OwlСобытие может запускаться и при отсутствии активных коннектов. А в этом случае функция connection_property() теряет смысл. как? ведь ивент создаёт коннект, соответственно коннект как минимум один есть всегда! или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2008, 11:18 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
с новым годомеще стоило-бы посмотреть что возвращает dbo.sa_conn_info() если коннектов нет ... как можно посмотреть и при этом не сгенерировать коннект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2008, 16:33 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
неужели ни у кого, кроме меня такой проблемы нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2008, 10:54 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
diallerнеужели ни у кого, кроме меня такой проблемы нет?А ты объясни что данный эвент делать то должен? А то может твою исходную проблему можно (и нужно) решать другими способами? Эвенты вещь полезная, но очень редко когда они действительно нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2008, 17:12 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
White Owl diallerнеужели ни у кого, кроме меня такой проблемы нет?А ты объясни что данный эвент делать то должен? А то может твою исходную проблему можно (и нужно) решать другими способами? Эвенты вещь полезная, но очень редко когда они действительно нужны. ивент запускается ночью. и делает расчёты, бэкап и пр. отключает пользователей на время выполнения. и чтобы отключить тех, кого надо, а лишних (из других баз) не отключать я и пытаюсь получить DBNumber и имена запущенных ивентов (по этим именам я и определяю когда кого отключать и не пускать) но проблема не в этом. проблема в том, что селект из dbo.sa_conn_info() даёт ошибку из сабжа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2008, 17:24 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
diallerивент запускается ночью. и делает расчёты, бэкап и пр. отключает пользователей на время выполнения.Зачем это??? Пользователи ни бэкапу, ни расчетам не мешают (если конечно уровень изоляции стоит). Процедура требующая монопольного доступа к базе обычно шатдаунит базу с обрубанием существующих коннектов, запускает базу снова внутри локального движка (dbeng вместо dbsrv), делает свое грязное монопольное дело, гасит dbeng и перезапускает базу в dbsrv. Читай БОЛ про команды stop database и start database. diallerно проблема не в этом. проблема в том, что селект из dbo.sa_conn_info() даёт ошибку из сабжаПроблема все-же в изначально неправильном подходе :) Не надо работать с базой монопольно, это очень дурная идея. Сегодня твоя контора сидит целиком в одном офисе, завтра она разрастется и в базу будут приходить юзера из других часовых поясов. А ты их не будешь пускать в разгар рабочего дня только потому что у тебя ночь и пора делать бэкап? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2008, 17:46 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
White Owl diallerивент запускается ночью. и делает расчёты, бэкап и пр. отключает пользователей на время выполнения.Зачем это??? Пользователи ни бэкапу, ни расчетам не мешают (если конечно уровень изоляции стоит). Процедура требующая монопольного доступа к базе обычно шатдаунит базу с обрубанием существующих коннектов, запускает базу снова внутри локального движка (dbeng вместо dbsrv), делает свое грязное монопольное дело, гасит dbeng и перезапускает базу в dbsrv. Читай БОЛ про команды stop database и start database. diallerно проблема не в этом. проблема в том, что селект из dbo.sa_conn_info() даёт ошибку из сабжаПроблема все-же в изначально неправильном подходе :) Не надо работать с базой монопольно, это очень дурная идея. Сегодня твоя контора сидит целиком в одном офисе, завтра она разрастется и в базу будут приходить юзера из других часовых поясов. А ты их не будешь пускать в разгар рабочего дня только потому что у тебя ночь и пора делать бэкап? :) отлично. спасибо. попробую изменить схему работы по твоему совету. кста, от ошибки 52003 я избавился (кажется избавился, потому как тестирование пока не очень продолжительное было) путём вынесения проверки (имею ввиду селект из dbo.sa_conn_info) из ивента в отдельную функцию. видимо sybase как-то не очень корректно выполняет ивенты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 11:07 |
|
||
|
SQLSTATE '52003'
|
|||
|---|---|---|---|
|
#18+
diallerкста, от ошибки 52003 я избавился (кажется избавился, потому как тестирование пока не очень продолжительное было) путём вынесения проверки (имею ввиду селект из dbo.sa_conn_info) из ивента в отдельную функцию. видимо sybase как-то не очень корректно выполняет ивенты. почти месяц на такой схеме работает почти 30 баз. полёт нормальный. вывод: делать селекты из системных таблиц в ивентах чревато проблемами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35387853&tid=2011469]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
94ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 464ms |

| 0 / 0 |
