|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
Господа, вот процедура которую я написал на Sybase: CREATE PROCEDURE dbo.fm_1031 AS BEGIN CREATE TABLE #t_da (da int) INSERT INTO #t_da (da)values(20100701) SELECT #t_da.da FROM #t_da END Делаю проверку с помощью SQL Advantage: exec fm_1031 Результат: da --------- 20100701 Всё работает!! Модифицирую процедуру (добавляю ещё одну строку (стоку данных в таблицу)) CREATE PROCEDURE dbo.fm_1031 AS BEGIN CREATE TABLE #t_da (da int) INSERT INTO #t_da (da)values(20100701) INSERT INTO #t_da (da)values(20100702) SELECT #t_da.da FROM #t_da END Сохраняю процедуру. Sybase Central ругается: The 'CREATE TABLE' command is not allowed within a multi-statement transaction in the 'tempdb' database. #t_da not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output). Создать процедуру получилось, а вот модифицировать нет. Как быть? Помогите!! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 19:27 |
|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
ошибка The 'CREATE TABLE' command is not allowed within a multi-statement transaction in the 'tempdb' database. означает что идет попытка создать таблицу (во время компиляции процедуры) внутри транзакции а в базе tempdb у тебя это запрещено через централ этот запрет можно отключить детальнее здесь http://manuals.sybase.com/onlinebooks/group-as/asg1250e/svrtsg/@Generic__BookTextView/34899 -- зы: возьми другое средство разработки (не централ), которое не работает в транзакционном режиме. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 23:10 |
|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
И еще один пишет процедуры на целой фирме... Не существует базы под названием Sybase. НЕ СУЩЕСТВУЕТ! Что значит "модифицирую процедуру" и "сохраняю процедуру"? Как именно вы это делаете? С каким инструментом работаете? Правильный метод написания: 1) Используешь шаблон типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
2) На основе этого шаблона для каждой процедуры делаешь отдельный файл с именем совпадающим с именем процедуры и расширением .sql 3) Настраиваешь себе на это расширение вот такой батничек: Код: plaintext 1. 2. 3. 4.
4) Создание и обновление процедур будет заключаться в обновлении текстового файла в любом редактор (хоть в notepad) с последующим "запуском" .sql файла через батничек. Если будете делать так, то проблем с multi-statement transaction не будет. Как грязное решение, "здесь и сейчас" для неизвестного инструмента с ручным или мышастым управлением: закрывайте транзакцию (rollback или commit) после создания процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2010, 23:37 |
|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
golol_ol wrote: > Сохраняю процедуру. > Sybase Central ругается: > The 'CREATE TABLE' command is not allowed within a multi-statement > transaction in the 'tempdb' database. > #t_da not found. Specify owner.objectname or use sp_help to check > whether the object exists (sp_help may produce lots of output). > > Создать процедуру получилось, а вот модифицировать нет. Эта процедура тут ни при чём. И вообще процедуры тут ни при чём. У тебя где-то транзакция незавершённая осталась. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 09:41 |
|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
Dmitry. wrote: > The 'CREATE TABLE' command is not allowed within a multi-statement > transaction in the 'tempdb' database. > > означает что идет попытка создать таблицу (во время компиляции > процедуры) внутри транзакции Во время компиляции процедуры никакие таблицы не создаются. Он эту процедуру ВЫПОЛНЯЕТ. В начатой, но незавершённой транзакции. Но сам не знает, что транзакцию он стартовал. Автору: переконнекться к серверу, и сделай всё заново (исполни процедуру) -- получится. Или напиши в соединении while @@trancount > 0 rollback go и потом выполни. Но где у тебя транзакция не закрывается тебе всё равно ПРИДЁТСЯ искать. > а в базе tempdb у тебя это запрещено > через централ этот запрет можно отключить > детальнее здесь > http://manuals.sybase.com/onlinebooks/group-as/asg1250e/svrtsg/@Generic__BookTextView/34899 НЕ НАДО это отключать. Будет очень-очень плохо потом. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 09:45 |
|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
Господа, большое спасибо всем кто ответил на мой вопрос. Воспользовался советом господина White owl. Хорошо, что мир не без добрых людей. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 15:36 |
|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
White Owl wrote: > Если будете делать так, то проблем с multi-statement transaction не будет. > Как грязное решение, "здесь и сейчас" для неизвестного инструмента с > ручным или мышастым управлением: закрывайте транзакцию (rollback или > commit) после создания процедуры. а причём тут транзакции вообще ? А create procedure вообще DDL, он транзакций не должен по идее открывать. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 15:46 |
|
Проблема модификации процедуры (Sybase 12.5, Window 2000)
|
|||
---|---|---|---|
#18+
MasterZivа причём тут транзакции вообще ? А create procedure вообще DDL, он транзакций не должен по идее открывать. Тут не "транзакция", а "multi-statement transaction". Разницу видишь? Если говорить на более-менее универсальном языке, то DDL должна быть в отдельном командном пакете. То что пакеты почему-то называются "multi-statement transaction" оставим на совести тех кто писал сообщения об ошибках. А ручное закрытие транзакции обычно тянет за собой и закрытие пакета. Не обязательно конечно, но обычно... Это достаточно уверено срабатывает почти во всех ГУИ-консолях при односессионной работе. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 17:48 |
|
|
start [/forum/topic.php?desktop=1&fid=55&tid=2010594]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 323ms |
total: | 489ms |
0 / 0 |