Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 BEGIN TRANSACTION + ALTER DATABASE  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 590
Добрый день.

Вопрос про то, можно ли выполнить ALTER DATABASE внутри блока транзакции? Сейчас при выполнении ALTER DATABASE пишет ошибку, что данный метод не может быть выполнен внутри транзакции. Может существует способ "что-то выполнить" внутри транзакции и "что-то выполненное" не будет касаться текущей транзакции

нужно выполнить изменение совместимости БД:

BEGIN TRANSACTION
--
-- выполнение множества различных скриптов
--
DECLARE @dbname					NVARCHAR(100) = db_name()
EXECUTE('ALTER DATABASE ' +@dbname+ ' SET COMPATIBILITY_LEVEL = 130')

--
-- выполнение множества различных скриптов
--

COMMIT TRANSACTION
11 апр 19, 08:00    [21858907]     Ответить | Цитировать Сообщить модератору
 Re: BEGIN TRANSACTION + ALTER DATABASE  [new]
msLex
Member

Откуда:
Сообщений: 5946
Игорь_UUS,

Вам нужно именно транзакционный alter database? Его нет. Если про из текущей транзакции выполнить внетранзакционный alter database варианты есть. Loopback linkedserver, clr с отдельным коннектор. Поищите по форуму "автономные транзакции"
11 апр 19, 08:50    [21858941]     Ответить | Цитировать Сообщить модератору
 Re: BEGIN TRANSACTION + ALTER DATABASE  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 590
msLex
Игорь_UUS,

Вам нужно именно транзакционный alter database? Его нет. Если про из текущей транзакции выполнить внетранзакционный alter database варианты есть. Loopback linkedserver, clr с отдельным коннектор. Поищите по форуму "автономные транзакции"



Именно "из текущей транзакции выполнить внетранзакционный alter database". Скажите варианты есть в виде скриптов выполнить? (например, clr точно не подойдёт).
11 апр 19, 09:05    [21858943]     Ответить | Цитировать Сообщить модератору
 Re: BEGIN TRANSACTION + ALTER DATABASE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6143
какой-то новый вид костылей
11 апр 19, 09:21    [21858951]     Ответить | Цитировать Сообщить модератору
 Re: BEGIN TRANSACTION + ALTER DATABASE  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 590
TaPaK
какой-то новый вид костылей



пускай костыли... это обойти 1 раз надо... начало и окончание транзакции "вшито" и доступа у меня туда нет(( костыль как раз и нужен
11 апр 19, 09:46    [21858966]     Ответить | Цитировать Сообщить модератору
 Re: BEGIN TRANSACTION + ALTER DATABASE  [new]
invm
Member

Откуда: Москва
Сообщений: 8492
declare @s varchar(8000);
select @s = 'sqlcmd -S ' + @@servername + ' -E -Q "alter database ' + quotename(db_name()) + ' set compatibility_level = 130;"';
exec xp_cmdshell @s;
11 апр 19, 09:54    [21858973]     Ответить | Цитировать Сообщить модератору
 Re: BEGIN TRANSACTION + ALTER DATABASE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6143
Игорь_UUS
TaPaK
какой-то новый вид костылей



пускай костыли... это обойти 1 раз надо... начало и окончание транзакции "вшито" и доступа у меня туда нет(( костыль как раз и нужен

это идиотизм, внутри транзакции делать нельзя, если и воткнуть неким чудом, то это будет применено для всех, продолжайте расставлять грабли
11 апр 19, 09:55    [21858976]     Ответить | Цитировать Сообщить модератору
 Re: BEGIN TRANSACTION + ALTER DATABASE  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28178
TaPaK
то это будет применено для всех,
Это же, наверное, какой то инсталлятор.
11 апр 19, 10:16    [21858993]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить