Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / The 'DROP TABLE' command is not allowed within a multi-statement transaction / 14 сообщений из 14, страница 1 из 1
23.01.2007, 16:02
    #34275858
NickVA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Sybase ASE.
В скрипте используются временные таблицы(#) , и из-за них не получается использовать транзакцию.
Выдает ошибку: The 'DROP TABLE' command is not allowed within a multi-statement transaction in the 'tempdb' database.
...
Рейтинг: 0 / 0
23.01.2007, 16:21
    #34275941
лень
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Ну и? пожелание сформулируй...
а если очень-очень хочется, то для tempdb выставь ddl in tran опцию...
...
Рейтинг: 0 / 0
23.01.2007, 18:20
    #34276362
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
лень пишет:
> Автор: "лень"
> Ну и? пожелание сформулируй...
> а если очень-очень хочется, то для tempdb выставь ddl in tran опцию...

Или еще лучше - создавай временную таблицу ДО начала транзакции.
Это нужно на самом деле делать в любом случае, стоит у тебя
в tempdb ddl in tran = 1 или нет.

А если tempdb.ddl in tran = 1 и создашь временную (или постоянную
в tempdb) таблицу в транзакции, то заблокируешь tempdb монопольно
на время всей этой транзакции.
(это не относится к ASE 15).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
24.01.2007, 07:07
    #34277036
NickVA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Параметр ddl in tran установлен в Y.
А схема запроса примерно такая:

create table #t
create table #t2

Заполенение таблицы #t
Заполенение таблицы #t2
begin tran
save tran tr

Тут процедуры (штук 10)
if Err=0
commit tran tr
else
rollback tran tr

drop table #t
drop table #t2


Пробовал уже начинать транзакицю и до создаения таблиц и после и до drop table и после.
Ни чего не выходит.
...
Рейтинг: 0 / 0
24.01.2007, 10:08
    #34277409
лень
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
sp_helpdb tempdb
покажи...
...
Рейтинг: 0 / 0
24.01.2007, 10:19
    #34277455
NickVA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Прикрепил jpeg
...
Рейтинг: 0 / 0
24.01.2007, 10:47
    #34277585
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
NickVA пишет:

> А схема запроса примерно такая:
Правильная схема (с точки зрения транзакций и создания временных таблиц).
> Пробовал уже начинать транзакицю и до создаения таблиц и после и до drop
> table и после.

Надо ПОСЛЕ создания таблиц.

> Ни чего не выходит.

Может быть транзакция уже просто кем-то начата ДО этого ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
24.01.2007, 10:49
    #34277592
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
NickVA пишет:

> Прикрепил jpeg

Ну и что там видно ? Просили же конкретно текст результата запроса послать.
Я удалю JPEG, все равно ничего он не показывает.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
24.01.2007, 12:32
    #34278224
NickVA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Я так понял, что ошибка возникла из-за параметра 'ddl in tran' базы tempdb. Теперь возникает вопрос, каким образом изменение 'ddl in tran' в true скажется на работе ?
Можно ли этот параметр смело менять или нужно предусмотреть какие либо ситуации ?
...
Рейтинг: 0 / 0
24.01.2007, 13:04
    #34278407
лень
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Ну как уже было сказано выше, если у тебя в транзакции создается табличка, то на всем продолжении данной транзакции tempdb..sysobjects и tempdb..syscolumns будут заблокированы, что приведет к невозможности создания временных таблиц из других коннектов...
Так что оптимальнее все-таки найти причину того, почему у тебя таблицы создаются внутри транзакции...

Кстати, Sybase рекомендует создавать временные таблицы в процедуре-обертке, а использовать их в другой процедуре... например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create proc outer_proc
as
  create table #tmp(i int)
  exec inner_proc
go

create inner_proc
as
  begin tran
  ...
  insert into #tmp(i) values( 100 )
  ...
  select * from #tmp
  ...
  commit tran
go
Правда при проливке будут небольшие пляски с бубном из-за необходимости создания процедур в правильном порядке...
...
Рейтинг: 0 / 0
24.01.2007, 13:31
    #34278575
NickVA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Все, разобрался, все заработало. Параметр ddl in tran менять не надо было.
...
Рейтинг: 0 / 0
24.01.2007, 15:39
    #34279182
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
NickVAВсе, разобрался, все заработало. Параметр ddl in tran менять не надо было.

я бы порекомендовал убрать из сегментов tempdb девайс master
...
Рейтинг: 0 / 0
24.01.2007, 15:42
    #34279209
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
NickVA пишет:

> Все, разобрался, все заработало. Параметр *ddl in tran *менять не надо было.

Так поделись, что было-то ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
25.01.2007, 06:41
    #34280557
NickVA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The 'DROP TABLE' command is not allowed within a multi-statement transaction
Я транзакцию не закрыл, Commit tran забыл написать, точнее было написанно, но в условие не попадало.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / The 'DROP TABLE' command is not allowed within a multi-statement transaction / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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