powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / почему не откатывается транзакция?
20 сообщений из 20, страница 1 из 1
почему не откатывается транзакция?
    #39823646
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант с try catch работает, но я думал что без try catch должен произойти окат из за ошибки.
Или я заблуждаюсь?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table #T1
(
  C1 int identity(1,1), 
  C2 varchar(10)
)

-- исходное состояние со "старыми данными" которые должны быть обновлены
-- в случае ошибки старые данные должны остаться
truncate table #T1; insert #T1(C2) values('a'),('b') 

begin tran T1
  --это удаление не откатывается при возникновении последующей ошибки
  delete #T1 

  --вызываем ошибку:
  insert #T1(C1, C2) values(1,'c'),(2,'d') --> ошибка 544: Cannot insert explicit value for identity column 

commit

--проверка:
select count(*) from #T1 --> 0 удаление не откатилось
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39823649
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39823653
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander UsВариант с try catch работает, но я думал что без try catch должен произойти окат из за ошибки.
Или я заблуждаюсь?С try catch тоже не откатывает
Откат происходит, если вы вызвали rollback, либо если установлена опция xact abort
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39823655
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgAlexander UsВариант с try catch работает, но я думал что без try catch должен произойти окат из за ошибки.
Или я заблуждаюсь?С try catch тоже не откатывает
Откат происходит, если вы вызвали rollback, либо если установлена опция xact abortЛибо severity у ошибки такое, что отстреливается сессия.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39823694
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевичalexeyvgпропущено...
С try catch тоже не откатывает
Откат происходит, если вы вызвали rollback, либо если установлена опция xact abortЛибо severity у ошибки такое, что отстреливается сессия.А, ну это да, я про нужды автора, про обработку обычных ошибок, которые оставляют транзакцию в обычном состоянии, и можно ещё много-много чего в базе наменять...
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39823710
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасобо, разобрался благодаря вашим комментам.

Хотя странно, что XACT_ABORT по умолчанию в OFF.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39823731
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander UsХотя странно, что XACT_ABORT по умолчанию в OFF.
А что странного? Чем ON в данном случае лучше/логичнее чем OFF?
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39823888
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexAlexander UsХотя странно, что XACT_ABORT по умолчанию в OFF.
А что странного? Чем ON в данном случае лучше/логичнее чем OFF?Действительно ON по умолчанию смотрелся бы лучше. Есть ошибка - прекратили, откатили. А если нужно другое поведение, то можно и поменять.

Но вот в Sybase так решили в далёких 80-х, а ломать совместимость с предыдущими версиями никто не будет.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824009
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgЕсть ошибка - прекратили, откатили.
Из-за ошибки в одном запросе откатывать целую транзакцию? Это к PostgreSQL.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824035
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovalexeyvgЕсть ошибка - прекратили, откатили.
Из-за ошибки в одном запросе откатывать целую транзакцию?Да, для поведения по умочанию, когда обработка ошибок не предусмотрена, это очень даже разумно.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824057
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgmsLexпропущено...

А что странного? Чем ON в данном случае лучше/логичнее чем OFF?Действительно ON по умолчанию смотрелся бы лучше. Есть ошибка - прекратили, откатили. А если нужно другое поведение, то можно и поменять.

Но вот в Sybase так решили в далёких 80-х, а ломать совместимость с предыдущими версиями никто не будет.Я тут как-то повозмущался по этому поводу, - так мне сказали, что в последних версиях сервера это исправили.
Опять обманули? :((
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824087
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapтак мне сказали, что в последних версиях сервера это исправили.
Опять обманули? :((Исправили в последних версиях SSMS - появилась соответствующая настройка.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824307
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmiapтак мне сказали, что в последних версиях сервера это исправили.
Опять обманули? :((Исправили в последних версиях SSMS - появилась соответствующая настройка.Имеется в виду, что настройка XACT_ABORT на свежеустановленном SSMS по умолчанию в ON?
В 2016 этого нет, может, позже сделали...

И более важно, какая настройка в созданном коннекте, если этот параметр явно не задан (SSMS же его задаёт явным образом). Для 2019 написано, что "OFF — установка по умолчанию"
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824319
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgИмеется в виду, что настройка XACT_ABORT на свежеустановленном SSMS по умолчанию в ON?Нет. Имеется в виду, что можно настроить значение по-умолчанию для SSMS.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824339
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmalexeyvgИмеется в виду, что настройка XACT_ABORT на свежеустановленном SSMS по умолчанию в ON?Нет. Имеется в виду, что можно настроить значение по-умолчанию для SSMS.А, ну это понятно, это же называется "по умолчанию"
Смысл то в том, что начинающему лучше ставить по умолчанию XACT_ABORT, в свежеинсталлированном сиквеле, а потом уже пусть делает, как ему нужно, когда разберётся. Это же логично.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824340
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgэто же называется "по умолчанию"это же не называется
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824341
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmalexeyvgИмеется в виду, что настройка XACT_ABORT на свежеустановленном SSMS по умолчанию в ON?Нет. Имеется в виду, что можно настроить значение по-умолчанию для SSMS.Вот, ТС, с сиквелом работает с 2005 года, и для него откровение.
Для него (и миллиона других) установка XACT_ABORT ON до тех пор, пока явно не послал команду XACT_ABORT OFF, было бы более правильным.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824350
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgДля него (и миллиона других) установка XACT_ABORT ON до тех пор, пока явно не послал команду XACT_ABORT OFF, было бы более правильным.

Согласен.
К тому же это более подходило бы под определение транзакции (всё или ничего).
XACT_ABORT ON может и иногда нужная опция, но это уже наворот для знатоков.
Но имеем что имеем. Просто надо (было) это знать.

Что касается стандартных установок, самой "интересной" была установка приращения файлов по 1 МБ.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824418
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgдля поведения по умочанию, когда обработка ошибок не предусмотрена, это очень даже разумно.
В сочетании с автоматическим стартом следующей транзакции на следующем запросе, это посылает лесом единственное полезное свойство транзакции - атомарность. С тем же успехом транзакции можно вообще выкинуть.
...
Рейтинг: 0 / 0
почему не откатывается транзакция?
    #39824481
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovalexeyvgдля поведения по умочанию, когда обработка ошибок не предусмотрена, это очень даже разумно.
В сочетании с автоматическим стартом следующей транзакции на следующем запросе, это посылает лесом единственное полезное свойство транзакции - атомарность. С тем же успехом транзакции можно вообще выкинуть.Когда установлен XACT_ABORT ON, то при возникновении ошибки откатывается весь пакет.
А приложение уходит на обработчик ошибок (по умолчанию - падает)

Конечно, в приложении может быть пустой трай-кетч, и тогда оно будет долбить запросами, корёжа базу. Но это ИМХО менее распространённая ситуация, понятно, что, как в поговорке, сдуру можно и транзакцию сломать.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / почему не откатывается транзакция?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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