Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
Не первый день бьюсь над проблемой. ASA 8.0.3. Внутри процедуры T-SQL есть такая строка: Код: plaintext 1. 2. 3. Тем не менее, периодически (процедуры вызывается несколько раз из скрипта) данный UPDATE перестает обновлять записи, при этом @@rowcount=0. Повторное выполнение процедуры после сбоя дает стабильно тот же результат (сбой). Пересоздание процедуры проблему вылечивает на какое-то время. Возможно, важный момент: Между несколькими вызовами процедуры таблица SC33 пересоздается и заполняется, причем с другим набором полей (естественно, поля TREE1 и PARENTID имеются во всех вариантах создания таблицы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:37 |
|
||
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
Как именно пересоздается? Drop table - create table? Может имеет смысл использовать временные локальные таблицы вместо постоянных? Вообще, глюки такого типа происходят при нарушении индексов. --- http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 17:35 |
|
||
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
White OwlКак именно пересоздается? Drop table - create table? Может имеет смысл использовать временные локальные таблицы вместо постоянных? Вообще, глюки такого типа происходят при нарушении индексов. Не обязательно. Известная бага - это сохранение в кэше компилированной процедуры и ее планов запросов, где в результате изменения схемы БД сервер пытается выполнить сохраненный, но уже не соответствующий действительности план запроса процедуры. Особенно это легко прослеживается на этом примере: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. P.S. Присоединяюсь к вопросу - зачем пересоздавать таблицы, кто мешает все делать на локальных времянках (тем более что они включены в поддержку диалекта TSQL) ? --- http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 17:51 |
|
||
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
Пересоздается именно так. Вернее так: после дропа таблица создается путем загрузки из DBF'а: Код: plaintext 1. 2. Еще при выполнении данной процедуры возникает ошибка:Column 'STATEFROM' not found при обращении к курсору по таблице SC33. Поле STATEFROM в это время в таблице существует и является последним полем в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 17:53 |
|
||
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
ASCRUS Спасибо, вы подтвердили мои подозрения насчет сохранения в кэше скомпилированной процедуры, возникшие после прочтения в документации: авторAdaptive Server Anywhere always recompiles procedures the first time they are executed after a database is started, and stores the compiled procedure until the database is stopped. В связи с этим 2 вопроса: 1) нельзя ли принудительно перекомпилировать процедуру перед выполнением? 2) если подойти к решению проблемы с другой, более правильной стороны: как оператором INPUT INTO загрузить из DBF некое фиксированное подмножество полей таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 17:58 |
|
||
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
Можно попробовать или грузить данные во времянку, а оттуда куда нужно раскидывать. Второй способ - вместо загрузки через INPUT попробовать подцепить удаленный сервер на DBF и оттуда тащить данные через прокси таблицы. -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 17:59 |
|
||
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
Ну вдогонку уж третий способ - внутри хранимки организовать времянку, через динамический SQL загнать в нее данные и далее работать с ней. -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 18:01 |
|
||
|
Непонятное поведение внутри процедуры Transact-SQL
|
|||
|---|---|---|---|
|
#18+
ASCRUS Еще раз огромное спасибо. Думаю, наилучший вариант - через прокси-таблицы. P.S.: эээх, сюда бы SQL*Loader, и без всяких гетерогенных сервисов, ... тьфу, прокси-таблиц бы обошлось. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 18:17 |
|
||
|
|

start [/forum/topic.php?fid=55&tid=2012564]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 372ms |

| 0 / 0 |
