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

Откуда: Moscow
Сообщений: 67
Помогите, есть хранимая процедура в ней открывается
именованная Транзакция с именем А_TRAN в ней в свою очередь есть ВЛОЖЕННАЯ транзакция B_TRAN.
???? Вопрос ???? : почему не могу откатить вложенную транзакцию, хотя оператор commit на вложенную тран. срабатывает

Т.е. процедура выглядит так:
-----------------------------

begin tran A_TRAN - главная тран.

begin tran B_TRAN - вложенная тран.

... какие-то SQL операторы...

rollback tran B_TRAN - ЭТО НЕ РАБОТАЕТ (SQL говорит, что
такая тран. не найдена, хотя если вместо этой строчки вставить COMMIT TRAN B_TRAN, то это прокатит и SQL "подтвердит" вложенную транзакцию )

commit tran A_TRAN
17 фев 04, 11:04    [538756]     Ответить | Цитировать Сообщить модератору
 Re: Не срабатывает ROLLBACK TRANSACTION в SQL Server 2000  [new]
Артем1
Member

Откуда: www.desnogorsk.{ru||net} -> Москва
Сообщений: 2036
ROLLBACK [ TRAN [ SACTION ]
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ] ]

Arguments
transaction_name

Is the name assigned to the transaction on BEGIN TRANSACTION. transaction_name must conform to the rules for identifiers, but only the first 32 characters of the transaction name are used. When nesting transactions, transaction_name must be the name from the outermost BEGIN TRANSACTION statement.


Может, по этому?
17 фев 04, 11:11    [538779]     Ответить | Цитировать Сообщить модератору
 Re: Не срабатывает ROLLBACK TRANSACTION в SQL Server 2000  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
ROLLBACK [ TRAN [ SACTION ]
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ] ]

Arguments
transaction_name

Is the name assigned to the transaction on BEGIN TRANSACTION. transaction_name must conform to the rules for identifiers, but only the first 32 characters of the transaction name are used. When nesting transactions, transaction_name must be the name from the outermost BEGIN TRANSACTION statement.

...

savepoint_name

Is savepoint_name from a SAVE TRANSACTION statement. savepoint_name must conform to the rules for identifiers. Use savepoint_name when a conditional rollback should affect only part of the transaction.
17 фев 04, 11:11    [538783]     Ответить | Цитировать Сообщить модератору
 Re: Не срабатывает ROLLBACK TRANSACTION в SQL Server 2000  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Угу! Именно это.
17 фев 04, 11:12    [538784]     Ответить | Цитировать Сообщить модератору
 Re: Не срабатывает ROLLBACK TRANSACTION в SQL Server 2000  [new]
Предводитель команчей
Member

Откуда: Днепропетровск
Сообщений: 321
Для ROLLBACK TRAN корректным будет указание самой верхней транзакции, иначе он выдаст ошибку. Т.о. произойдет откат всех транзакций.

BOL -> Nested Transaction:
It is not legal for the transaction_name parameter of a ROLLBACK TRANSACTION statement to refer to the inner transactions of a set of named nested transactions. transaction_name can refer only to the transaction name of the outermost transaction.

Если есть необходимость откатить вложенную - то см. SAVE TRANSACTION
17 фев 04, 11:18    [538807]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить