.NET + SQL Server 2005 - Как откатить транзакцию, но вести журнал - PullRequest
0 голосов
/ 22 июля 2011

У нас есть система с компонентами .NET и SQLServer.Компонент .NET отвечает за запуск процесса и заключение вызовов транзакций в транзакцию.

Этот процесс выполняется с использованием в основном хранимых процедур в базе данных, которые все записывают в нашу собственную таблицу журнала.

Теперь проблема в том, что транзакция, запускаемая в коде .NET, будет включать все остальные, которые используются в коде базы данных, и если одна из дочерних транзакций откатывается назад, таблица журнала пропадает.

Есть ли способ сохранить логи, откатывая все остальное?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Используйте переменную таблицы для хранения ошибки: это не зависит от транзакций

или используйте SET XACT_ABORT ON в процессах, которые неявно откатываются назад, и регистрируют после ошибка

0 голосов
/ 22 июля 2011

Может ли транзакция SavePoints помочь вам?

Это точно решение на уровне базы данных :

Точки сохранения предлагают механизм отката частей транзакций. Вы создаете точку сохранения, используя SAVE TRANSACTION savepoint_name заявление. Позже вы выполняете ROLLBACK TRANSACTION savepoint_name заявление, чтобы откатиться к точке сохранения вместо отката к начало транзакции.

Также вы можете обратиться к SqlTransaction.Save Метод решения C # , надеюсь, что это именно то, что вы ищете:

Создает точку сохранения в транзакции, которую можно использовать для отката часть транзакции и указывает имя точки сохранения.

...