Команда CREATE TABLE не разрешена в транзакции с несколькими операторами в базе данных tempdb.

Я работаю над java-проектом, в котором я использую метамодель Sybase и Apache для получения данных таблицы и ее информации. получить информацию о столбцах, используя метамодель Apache, это дает мне ошибку:

com.sybase.jdbc4.jdbc.SybSQLException: команда CREATE TABLE не разрешена в транзакции с несколькими операторами в базе данных tempdb.

У меня установлена ​​Sybase ASE 15.5 в Windows 10.


person santosh    schedule 27.08.2019    source источник


Ответы (2)


Параметры «ddl in tran» также должны быть включены во временных базах данных. Это может сделать системный администратор или кто-то с sa_role:

1> use master
2> go
1> sp_dboption tempdb, 'ddl in tran', 'true'
2> go
Warning: Attempting to change database options for a temporary database. Database options must be kept consistent across all temporary databases.
Database option 'ddl in tran' turned ON for database 'tempdb'.
Running CHECKPOINT on database 'tempdb' for option 'ddl in tran' to take effect.
(return status = 0)

Как следует из предупреждения, это должно быть согласовано во всех временных базах данных, если у вас их несколько. После завершения команды параметры можно проверить с помощью sp_helpdb:

1> sp_helpdb
2> go

[stuff deleted]

 tempdb                            104.0 MB              sa             2      Aug 05, 2019             no_recovery                     0               NULL        
 select into/bulkcopy/pllsort, trunc log on chkpt, ddl in tran, mixed log and data, allow wide dol rows 

Вот пример создания таблицы внутри транзакции:

1> use tempdb
2> go
1> begin tran
2> go
1> create table foo ( k int not null, value varchar(25) null) 
2> go
1> commit
2> go
1> 
person Richard Crossley    schedule 27.08.2019

Это можно использовать (sp_dboption tempdb, 'ddl in tran', 'true'), но не рекомендуется устанавливать для него значение true, это может вызвать проблемы параллелизма в tempdb.

Следует быть осторожным, используя эту опцию.

person Nuno Nóbrega Batista    schedule 03.02.2020