Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
gugashvili
Guest
почему не откатывается транзакция?

SET XACT_ABORT ON;
begin tran
insert into t1 values(1)
raiserror('error!',16,1)
commit tran

как сделать правильно именно с XACT_ABORT.
22 дек 04, 09:47    [1198760]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
Glory
Member

Откуда:
Сообщений: 104760
raiserror НЕ генерирует ошибку. Это команда ОТСЫЛКИ клиенту некоего сообщения которое этот клиент воспринимает как ошибку сервера.
22 дек 04, 09:51    [1198785]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
gugashvili
Guest
как тогда быть?
можно ли както сгенерить ошибку?
22 дек 04, 09:54    [1198803]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
откатывается тока при рантайм еррор
бол
SET XACT_ABORT
Specifies whether Microsoft® SQL Server™ automatically rolls back the current transaction if a Transact-SQL statement raises a run-time error.

если вы пишите где-то
raiserror('error!',16,1)
то я думаю не составит большого труда написать ещё и rollback
а XACT_ABORT для другого нужен, почитайте БОЛ
22 дек 04, 09:55    [1198804]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
Glory
Member

Откуда:
Сообщений: 104760
gugashvili
как тогда быть?
можно ли както сгенерить ошибку?


SET XACT_ABORT ON;
begin tran
insert into t1 values('XXXXX')
commit tran
22 дек 04, 09:56    [1198812]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
gugashvili
Guest
у меня вложенные процедуры с begin tran
поэтому нужен XACT_ABORT , использование прямого rollback добавляет мне траблов
22 дек 04, 10:03    [1198846]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
gugashvili
у меня вложенные процедуры с begin tran
поэтому нужен XACT_ABORT , использование прямого rollback добавляет мне траблов

какие траблы? ошибка 266?
результат всё равно будет идентичен
22 дек 04, 10:26    [1198971]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
gugashvili
Guest
да, ошибка 266
22 дек 04, 10:31    [1198993]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
это, конечно, не очень приятно, что выполнение процедуры заканчивается ошибкой, н овот что пишет БОЛ
Note This error can be ignored because it only sends a message to the client and does not affect execution.

ну не знаю, дело ваше, всё же понятней, наверное, явно писать rollback, чем ставить XACT_ABORT и писать абсурдную строку, типа select 1/0.
выбор за вами
22 дек 04, 10:35    [1199016]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
gugashvili
Guest
по-моему клиент в таком случае получит exception
22 дек 04, 10:44    [1199093]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
gugashvili
по-моему клиент в таком случае получит exception

не знаю, не проверял :-)
22 дек 04, 10:45    [1199103]     Ответить | Цитировать Сообщить модератору
 Re: не откатывается транзакция ( XACT_ABORT ON + raiseerror)  [new]
Роман Дынник
Member

Откуда:
Сообщений: 3324
Лучше проверять на вложенность транзакций и не стратовать новую транзакцию если открыта внешняя
if @@trancount = 0 begin tran
аналогичная проверка при роллбеке
if @@trancount <> 0 rollback tran
22 дек 04, 11:20    [1199308]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить