|
Глобальная временная таблица в процедурах ASE
|
|||
---|---|---|---|
#18+
Господа, столкнулся с проблемой видимости глобальных временных таблиц из процедур. (видел похожий топик "Создание глобальной временной таблицы в процедуре ASE 12/15" но у меня ситуация немного другая) По порядку. Есть таблицы в tempdb которые пересоздаются перловым скриптом. Есть процедура которая должна читать из этих таблиц. Процедура скомпиллировалась без проблем, но вот когда запускаю её то она не видит таблиц сидящих в tempdb. Таблицы реально существуют. Ad-hoc запросы работают, но вот процедура не видит таблицы. В доке не нашёл ничего однозначно говорящего, что постоянные временные таблицы нельзя использовать в процедурах. Кто-нибудь сталкивался с подобной проблемой? Может быть есть какой-нибудь трюк способный заставить процедуру увидеть таблицы. Для чего использую глобальные временные таблицы - отдельные процессы инсёртят довольно большое количество записей. Чтобы всё работало быстро и логи не выедались я использую select into tempdb..myTable. Потом эти таблицы хочу обработать в процедурах. Тоже в некоторые таблицы в tempdb у меня идёт загрузка данных через bcp. В общем #таблицами в моём случае никак не обойтись. Переходить на постоянные не хочется, т.к. тогда инсёрты будут медленнее. В общем, если кто может, подскажите почему процедура не видит глобальные временные таблицы и можно ли с этим что-нибудь сделать. Заранее большое спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2011, 03:17 |
|
Глобальная временная таблица в процедурах ASE
|
|||
---|---|---|---|
#18+
On 10.04.2011 4:17, Kru wrote: > Господа, столкнулся с проблемой видимости глобальных временных таблиц из процедур. > (видел похожий топик "Создание глобальной временной таблицы в процедуре ASE > 12/15" но у меня ситуация немного другая) В ASE нет глобальных временных таблиц. > По порядку. > Есть таблицы в tempdb которые пересоздаются перловым скриптом. Временная или постоянная ? Есть у неё префикс '#' ? > Есть процедура которая должна читать из этих таблиц. > Процедура скомпиллировалась без проблем, но вот когда запускаю её то она не > видит таблиц сидящих в tempdb. > Таблицы реально существуют. Ad-hoc запросы работают, но вот процедура не видит > таблицы. Лучше бы пример кода. И таблицу, естественно. > В доке не нашёл ничего однозначно говорящего, что постоянные временные таблицы > нельзя использовать в процедурах. Можно. > Чтобы всё работало быстро и логи не выедались я использую select into > tempdb..myTable. Потом эти таблицы хочу обработать в процедурах. Тоже в > некоторые таблицы в tempdb у меня идёт загрузка данных через bcp. В общем > #таблицами в моём случае никак не обойтись. Переходить на постоянные не хочется, > т.к. тогда инсёрты будут медленнее. Хм... Вообще, не должно было такого быть. Ждём подробности. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2011, 09:54 |
|
Глобальная временная таблица в процедурах ASE
|
|||
---|---|---|---|
#18+
Добрый день. Под глобальными временными таблицами я имел ввиду таблицы созданные в tempdb. Например tempbd..myTable. Можно из назвать постоянными временными таблицами, но какая-та кривая фраза получается :-) Есть первловый скрипт который выполняет ad-hoc запрос на сервере 1 select from myTable into tempdb..myTable where... Выборка может быть довольно большой, поэтому использую select into, чтоб не выело логи. Потом на сервере 2 выполняю drop table tempdb..myTable, create table tempdb..myTable, и через bcp перегоняю данные с сервера 1. Пересоздание таблицы значительно быстрее delete которые логируется и следовательно требует цикла для большого объема записей, чтобы большая транзакция не выела весь лог. Можно было бы в tempdb обойтись и truncate - но я, почемуто, предпочёл drop create. В общем-то без особого резона. То что существенно - что с постоянными таблицами в обычных базах данных я не могу выполнять такое пересоздание как и truncate. Политика запрещает, с чем согласен. В общем использую temdb для производительности. После того как на сервер 2 в temdb..MyTable данные уже загружены, хочу обработать их хранимой процедурой и вот здесь и сталкиваюсь с проблемой. Процедура не видит мои таблицы в tempdb. Заранее спасибо за ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2011, 19:37 |
|
Глобальная временная таблица в процедурах ASE
|
|||
---|---|---|---|
#18+
Господа, отзываю свой пост. Сделал простой прототип процедуры выполняющей запрос из tempdb..myTable. Потом пересоздал tempdb..myTable в другой сессии и выполнил процедуру. Никаких проблем не возникло. Буду разбираться ... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2011, 20:35 |
|
Глобальная временная таблица в процедурах ASE
|
|||
---|---|---|---|
#18+
On 11.04.2011 20:37, Kru wrote: > Можно из назвать постоянными временными таблицами, но какая-та кривая фраза > получается :-) Обычно называют "постоянные таблицы, созданные в tempdb". > Потом на сервере 2 выполняю drop table tempdb..myTable, create table > tempdb..myTable, и через bcp перегоняю данные с сервера 1. > Пересоздание таблицы значительно быстрее delete которые логируется и > следовательно требует цикла для большого объема записей, чтобы большая > транзакция не выела весь лог. Можно было бы делать truncate. > После того как на сервер 2 в temdb..MyTable данные уже загружены, хочу > обработать их хранимой процедурой и вот здесь и сталкиваюсь с проблемой. > Процедура не видит мои таблицы в tempdb. Очень очень странно. Но вообще-то после drop table/create table по честному положено пересоздать и процедуры, которые ссылаются на эту таблицу, и view, и всё что ни есть. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2011, 13:00 |
|
|
start [/forum/topic.php?fid=55&gotonew=1&tid=2010359]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 143ms |
0 / 0 |