Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 15.5 не могу создать временную таблицу / 20 сообщений из 20, страница 1 из 1
10.12.2013, 13:12
    #38495422
Delik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
10.12.2013, 13:24
    #38495449
Nashville
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
Delik,

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

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


Спасибо, но вы наверное не совсем внимательно читали вопрос. В нем я писал:
ТСДропается....Но ошибка та же.
...
Рейтинг: 0 / 0
10.12.2013, 14:29
    #38495605
Компостеров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
Сталкивался с такой проблемой, московский саппорт сослался на то, что поменялось поведение 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
10.12.2013, 14:34
    #38495613
Nashville
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
Delik,

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

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

Так Delik уже отверг этот вариант.
...
Рейтинг: 0 / 0
10.12.2013, 15:52
    #38495783
Delik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
10.12.2013, 16:07
    #38495806
Nashville
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
Delik,

я Вам уже выше ответил. Напишите, что выдает sp_tempdb show и поищите свою таблицу в sysobjects в tempdb (select * from tempdb..sysobjects where type = "U" and name LIKE "#t1%")
...
Рейтинг: 0 / 0
10.12.2013, 16:32
    #38495843
Delik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
10.12.2013, 19:33
    #38496121
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
Delik,

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


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

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



Tempdb сама пересоздается каждый раз из model при каждом старте сервера.
...
Рейтинг: 0 / 0
12.12.2013, 09:24
    #38497962
SAV4SAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
авторНе подходит. Читайте, пожалуйста, внимательно всю ветку. Запрос работает не в пакете!!!! Просто один запрос. Всё.
Одному мне показалось странным упоминание о ODBC ? Запрос выполняется из собственного кода, из сторонней программы?
...
Рейтинг: 0 / 0
12.12.2013, 12:00
    #38498232
Delik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
SAV4SAVавторНе подходит. Читайте, пожалуйста, внимательно всю ветку. Запрос работает не в пакете!!!! Просто один запрос. Всё.
Одному мне показалось странным упоминание о ODBC ? Запрос выполняется из собственного кода, из сторонней программы?
Ну как сказать из сторонней...
Можно сказать, что да. Через Sybase Central 6.0.0 временная создается норм, так как не юзается ODBC.
Через ODBC такой запрос не катит(C#,DbVisualizer,aseisql). Прошу прощения, если задал вопрос не совсем корректно...
...
Рейтинг: 0 / 0
12.12.2013, 14:42
    #38498611
SAV4SAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
12.12.2013, 15:10
    #38498666
Delik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
12.12.2013, 16:35
    #38498856
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
12.12.2013, 17:40
    #38498993
SAV4SAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
12.12.2013, 18:44
    #38499097
Delik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 15.5 не могу создать временную таблицу
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
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 15.5 не могу создать временную таблицу / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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