powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / The 'DROP TABLE' command is not allowed within a multi-statement transaction
14 сообщений из 14, страница 1 из 1
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34275858
NickVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sybase ASE.
В скрипте используются временные таблицы(#) , и из-за них не получается использовать транзакцию.
Выдает ошибку: The 'DROP TABLE' command is not allowed within a multi-statement transaction in the 'tempdb' database.
...
Рейтинг: 0 / 0
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34275941
лень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и? пожелание сформулируй...
а если очень-очень хочется, то для tempdb выставь ddl in tran опцию...
...
Рейтинг: 0 / 0
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34276362
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лень пишет:
> Автор: "лень"
> Ну и? пожелание сформулируй...
> а если очень-очень хочется, то для 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
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34277036
NickVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параметр 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
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34277409
лень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp_helpdb tempdb
покажи...
...
Рейтинг: 0 / 0
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34277455
NickVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикрепил jpeg
...
Рейтинг: 0 / 0
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34277585
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickVA пишет:

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

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

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

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

> Прикрепил jpeg

Ну и что там видно ? Просили же конкретно текст результата запроса послать.
Я удалю JPEG, все равно ничего он не показывает.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34278224
NickVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что ошибка возникла из-за параметра 'ddl in tran' базы tempdb. Теперь возникает вопрос, каким образом изменение 'ddl in tran' в true скажется на работе ?
Можно ли этот параметр смело менять или нужно предусмотреть какие либо ситуации ?
...
Рейтинг: 0 / 0
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34278407
лень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как уже было сказано выше, если у тебя в транзакции создается табличка, то на всем продолжении данной транзакции 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
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34278575
NickVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, разобрался, все заработало. Параметр ddl in tran менять не надо было.
...
Рейтинг: 0 / 0
The 'DROP TABLE' command is not allowed within a multi-statement transaction
    #34279182
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickVAВсе, разобрался, все заработало. Параметр ddl in tran менять не надо было.

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

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

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


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