powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 15.5 не могу создать временную таблицу
20 сообщений из 20, страница 1 из 1
ASE 15.5 не могу создать временную таблицу
    #38495422
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adaptive Server Enterprise/15.5/EBF 20634 SMP ESD#5.2/P/ia64/HP-UX B.11.23/asear155/2602/64-bit/FBO/Sun Dec 9 15:24:28 2012

Вопрос конечно идиотский но....
При попытке создать временную таблицу
Код: sql
1.
select 1  "Test" into #t1


Пишет ошибку:

Код: plaintext
[Error Code: 12822, SQL State: ZZZZZ]  [Sybase][ODBC Driver][Adaptive Server Enterprise]Cannot create temporary table '#t1'. Prefix name '#t1' is already in use by another temporary table '#t1'.

Пробовал перед вставкой во временную таблицу её дропнуть:
Код: sql
1.
drop table #t1


Дропается....Но ошибка та же. Такое ощущение, что ASE вначале создает временную таблицу, а потом опять(при вставке) пытается её создать. Кто сталкивался, помогите решить проблему...
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495449
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delik,

ответ конечно соответствует вопросу, но попробуйте выполнить
Код: sql
1.
2.
3.
4.
drop table #t1
go
select 1 "Test" into #t1
go
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495533
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NashvilleDelik,

ответ конечно соответствует вопросу, но попробуйте выполнить
Код: sql
1.
2.
3.
4.
drop table #t1
go
select 1 "Test" into #t1
go


Спасибо, но вы наверное не совсем внимательно читали вопрос. В нем я писал:
ТСДропается....Но ошибка та же.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495605
Компостеров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкивался с такой проблемой, московский саппорт сослался на то, что поменялось поведение ASE в 15.5


If the user is creating a #tmptble, then dropping it and recreating it again ALL IN ONE BATCH, it won't work.
The reason is that when the query is parsed and normalized, each object reference is replaced by an object id.
The two creates would generate two different ids, ASE doesn't know which to associate with the name later in the batch
(batches could contain conditional logic that caused the drop/2nd create to not execute)
To keep things simple for the parser, it isn't allowed


1> create table #tempabc (a int)
2> select * from #tempabc
3> drop table #tempabc
4> create table #tempabc ( b int)
5> go
Msg 12822, Level 16, State 1:
Server 'MyServer', Line 4:
Cannot create temporary table '#tempabc'. Prefix name '#tempabc' is already in
use by another temporary table '#tempabc'.



If the create temptable commands are run in two batches, then they are running fine:
=======================

1> create table #tempabc (a int)
2> select * from #tempabc
3> drop table #tempabc
4> go
a
-----------

1> create table #tempabc (b int)
2> select * from #tempabc
3> go
b
-----------
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495613
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delik,

Ну тогда смотрите в эту сторону.

Код: sql
1.
2.
3.
4.
sp_tempdb show
go
select * from tempdb..sysobjects where type = "U"
go
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495617
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компостеров,

Так Delik уже отверг этот вариант.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495783
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NashvilleКомпостеров,

Так Delik уже отверг этот вариант.
Да. Всё верно. Такой вариант тоже не подходит. Нужно СРАЗУ инсертить в темповую таблицу, без создания структуры заранее.

По шагово:
1)
Код: sql
1.
drop table #t1


Лог:
Код: plaintext
 [DROP - 0 row(s), 0.047 secs]  Command processed. No rows were affected
2)
Код: sql
1.
select 1 "Test" into #t1


Лог:
Код: plaintext
 [Error Code: 12822, SQL State: ZZZZZ]  [Sybase][ODBC Driver][Adaptive Server Enterprise]Cannot create temporary table '#t1'. Prefix name '#t1' is already in use by another temporary table '#t1'.

Просто какой-то бред. Но ни чем объяснить не могу....
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495806
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delik,

я Вам уже выше ответил. Напишите, что выдает sp_tempdb show и поищите свою таблицу в sysobjects в tempdb (select * from tempdb..sysobjects where type = "U" and name LIKE "#t1%")
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38495843
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NashvilleDelik,

я Вам уже выше ответил. Напишите, что выдает sp_tempdb show и поищите свою таблицу в sysobjects в tempdb (select * from tempdb..sysobjects where type = "U" and name LIKE "#t1%")
Прошу прощения, проглядел...

В связи со спецификой работы выполнить данные запросы не могу(нет прав), но вот такой запрос
Код: sql
1.
select object_id("#t1")


выдает id
Код: sql
1.
1450515425
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38496121
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delik,

Ну о причинах проблемы уже Компостеров рассказал.
А лечиться элементарно: используй две временные таблицы:
Код: sql
1.
2.
select 1 "Test" into #t1
select 2 "Test2" into #t2


Минусов ноль, зато и понятность скрипта повыситься, особенно если вместо #t1 ты будешь использовать что-нибудь осмысленное.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38496641
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlНу о причинах проблемы уже Компостеров рассказал.

Не подходит. Читайте, пожалуйста, внимательно всю ветку. Запрос работает не в пакете!!!! Просто один запрос. Всё.
Так как временная таблица хранится на протяжении сессии, пробовал:
1) Отконнектился
2) Приконнектился
3) Выполнил ОДИН запрос
Код: sql
1.
select 1 "Test" into #t1;


4) Получил ошибку
Код: plaintext
[Error Code: 12822, SQL State: ZZZZZ]  [Sybase][ODBC Driver][Adaptive Server Enterprise]Cannot create temporary table '#t1'. Prefix name '#t1' is already in use by another temporary table '#t1'.
White OwlА лечиться элементарно: используй две временные таблицы:

Парни, вопрос в том как обойти ошибку. Ошибка возникает при любом названии временной таблицы. Создавай хоть сто таблиц ошибка на КАЖДОЙ одна и та же

White OwlМинусов ноль, зато и понятность скрипта повыситься, особенно если вместо #t1 ты будешь использовать что-нибудь осмысленное.
Это был не боевой запрос, а запрос для тестов. Этику написания скриптов я знаю и использую в своей работе.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38497734
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelikНе подходит. Читайте, пожалуйста, внимательно всю ветку. Запрос работает не в пакете!!!! Просто один запрос. Всё.Где ты это писал? Ткни пальцем?
Все легальные проблемы с времянками происходят только внутри сессии. ВСЕ ответы соответственно подразумевали что ты создаешь внутри одной сессии две таблицы и создание второй не срабатывает.
Если у тебя первый же запрос на создание таблицы не проходит, то дело уже совсем в другом.

DelikПарни, вопрос в том как обойти ошибку. Ошибка возникает при любом названии временной таблицы. Создавай хоть сто таблиц ошибка на КАЖДОЙ одна и та жеУ тебя сервер с ума сошел.
В самом примитивном варианте лечения - перегрузи сервер. Чуть сложнее - перестрой tempdb.
Если не хватает прав - иди ругаться к sa. Покажи им (ему/ей) что первая же команда на создание времянки после начала сессии падает с ошибкой и sa должен будет разбираться.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38497842
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВ самом примитивном варианте лечения - перегрузи сервер. Чуть сложнее - перестрой tempdb.



Tempdb сама пересоздается каждый раз из model при каждом старте сервера.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38497962
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе подходит. Читайте, пожалуйста, внимательно всю ветку. Запрос работает не в пакете!!!! Просто один запрос. Всё.
Одному мне показалось странным упоминание о ODBC ? Запрос выполняется из собственного кода, из сторонней программы?
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38498232
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SAV4SAVавторНе подходит. Читайте, пожалуйста, внимательно всю ветку. Запрос работает не в пакете!!!! Просто один запрос. Всё.
Одному мне показалось странным упоминание о ODBC ? Запрос выполняется из собственного кода, из сторонней программы?
Ну как сказать из сторонней...
Можно сказать, что да. Через Sybase Central 6.0.0 временная создается норм, так как не юзается ODBC.
Через ODBC такой запрос не катит(C#,DbVisualizer,aseisql). Прошу прощения, если задал вопрос не совсем корректно...
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38498611
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delik,
aseisql не использует odbc. И в нем проблем нет -
Код: sql
1.
2.
3.
4.
5.
drop table #t1
go
select 'TEST'  "Test" into #t1
select * from #t1
go


DbVisualizer - может использовать odbc через "мост" jdbc-odbc, и таки да, в нем описанный эффект присутствует.
Если его настроить на использование jTDS - тоже нормально работает.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38498666
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SAV4SAVDelik,
aseisql не использует odbc. И в нем проблем нет -
Код: sql
1.
2.
3.
4.
5.
drop table #t1
go
select 'TEST'  "Test" into #t1
select * from #t1
go


DbVisualizer - может использовать odbc через "мост" jdbc-odbc, и таки да, в нем описанный эффект присутствует.
Если его настроить на использование jTDS - тоже нормально работает.
Так проблема основная, как раз на веб проекте, который написан на C# и коннектится как раз через ODBC.
P.S. aseisql таки да, не использует ODBC...
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38498856
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAV4SAVDelik,
aseisql не использует odbc. И в нем проблем нет -
Код: sql
1.
2.
3.
4.
5.
drop table #t1
go
select 'TEST'  "Test" into #t1
select * from #t1
go


DbVisualizer - может использовать odbc через "мост" jdbc-odbc, и таки да, в нем описанный эффект присутствует.
Если его настроить на использование jTDS - тоже нормально работает.

Это может быть связано с использованием пулов коннекций.

В JDBC они есть, и тогда каждое последующее обращение к БД может проходить через другое соединение,
и там эта проблема с временной таблицей может быть незамечена (временные таблицы специфичны для каждого соединения,
если соединение другое -- там может не быть этой таблицы и всё будет ОК. Заметить можно выбирая ещё и @@spid в запросе).

Поэтому рекомендую тестировать через isql и open client -- там никаких пулов нет вообще, так что сразу заметите.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38498993
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Насколько я понял, у ТС проблема в "существующем веб проекте, который написан на C# и коннектится через ODBC".
И он делает
Код: sql
1.
2.
3.
--1
drop table #t 
go

и
Код: sql
1.
2.
3.
--2
select ... into #t
go


в разных батчах. И при этом в --2 получает ошибку.
Я попробовал в SqlDbx (единственное, что сразу попалось почти GNU), с версиями odbc Version 4.20.0067 (12.5.1/P-EBF11786 ESD #02/04.20.0067) - работает правильно,
и Sybase ASE ODBC Driver/15.7.0/ESD#4/P/x86/Windows - этот работает как у ТС.
...
Рейтинг: 0 / 0
ASE 15.5 не могу создать временную таблицу
    #38499097
Delik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SAV4SAV с версиями odbc Version 4.20.0067 (12.5.1/P-EBF11786 ESD #02/04.20.0067) - работает правильно,
и Sybase ASE ODBC Driver/15.7.0/ESD#4/P/x86/Windows - этот работает как у ТС.
Совершенно верно. С прежними версиями всё ок.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 15.5 не могу создать временную таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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