Member 7967542 Ответов: 1

Как частично откатить транзакцию SQL server ?


Привет,

Я хочу частично откатить транзакцию. На самом деле у меня есть процедура, которая выполняет некоторые задачи. Я хочу регистрировать состояние на каждом шаге. Для этого нужно вставить строку в таблицу журнала. В случае какого-либо исключения я хочу знать, сколько шагов выполнено полностью и на каком шаге произошло исключение.

В настоящее время, если произошло какое-либо исключение, то все изменения в базе данных откатываются. Если есть какой-то обходной путь для этого, пожалуйста, дайте мне знать.

Что я уже пробовал:

Я все еще нахожу солн для этого.

1 Ответов

Рейтинг:
0

OriginalGriff

Вы не можете откатить "часть" транзакции - это все или ничего.
Даже если вы вложили транзакции, инструкции фиксации внутреннего уровня игнорируются, и откат внутреннего уровня вызовет ошибку: Вложенные Транзакции[^]
Вставить запись журнала, которая не будет откатана независимо от транзакции, возможно (но неприятно) - используйте xp_cmdshell и выполните osql с инструкцией INSERT в ваш журнал. Это сработает-потому что это отдельный сеанс, - но это будет очень медленно!