Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Глобальная временная таблица в процедурах ASE / 5 сообщений из 5, страница 1 из 1
10.04.2011, 03:17
    #37208509
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная временная таблица в процедурах ASE
Господа, столкнулся с проблемой видимости глобальных временных таблиц из процедур.
(видел похожий топик "Создание глобальной временной таблицы в процедуре ASE 12/15" но у меня ситуация немного другая)

По порядку.
Есть таблицы в tempdb которые пересоздаются перловым скриптом.
Есть процедура которая должна читать из этих таблиц.
Процедура скомпиллировалась без проблем, но вот когда запускаю её то она не видит таблиц сидящих в tempdb.
Таблицы реально существуют. Ad-hoc запросы работают, но вот процедура не видит таблицы.

В доке не нашёл ничего однозначно говорящего, что постоянные временные таблицы нельзя использовать в процедурах.

Кто-нибудь сталкивался с подобной проблемой? Может быть есть какой-нибудь трюк способный заставить процедуру увидеть таблицы.


Для чего использую глобальные временные таблицы - отдельные процессы инсёртят довольно большое количество записей.
Чтобы всё работало быстро и логи не выедались я использую select into tempdb..myTable. Потом эти таблицы хочу обработать в процедурах. Тоже в некоторые таблицы в tempdb у меня идёт загрузка данных через bcp. В общем #таблицами в моём случае никак не обойтись. Переходить на постоянные не хочется, т.к. тогда инсёрты будут медленнее.


В общем, если кто может, подскажите почему процедура не видит глобальные временные таблицы и можно ли с этим что-нибудь сделать.

Заранее большое спасибо
...
Рейтинг: 0 / 0
10.04.2011, 09:54
    #37208550
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная временная таблица в процедурах ASE
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
...
Рейтинг: 0 / 0
11.04.2011, 19:37
    #37210687
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная временная таблица в процедурах ASE
Добрый день.

Под глобальными временными таблицами я имел ввиду таблицы созданные в 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.

Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
11.04.2011, 20:35
    #37210715
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная временная таблица в процедурах ASE
Господа, отзываю свой пост.

Сделал простой прототип процедуры выполняющей запрос из tempdb..myTable.
Потом пересоздал tempdb..myTable в другой сессии и выполнил процедуру.
Никаких проблем не возникло.

Буду разбираться ...
...
Рейтинг: 0 / 0
12.04.2011, 13:00
    #37211714
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальная временная таблица в процедурах ASE
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
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Глобальная временная таблица в процедурах ASE / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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