Мне поручено доказать или опровергнуть поддержку транзакций в .net. Мы все знаем, что TransactionScope
может обрабатывать передачу/откат простых вещей, таких как вставка 3 записей в 3 разных таблицы, а затем удаление 5 записей в 5 других таблицах.Работает ли .net TransactionScope очень сложные вещи базы данных?
Моя команда не уверена, что TransactionScope
может обрабатывать транзакцию должным образом, если эти вставки/удаления имеют триггеры. Или если мы выполним SP, у которого есть свои собственные вложенные транзакции.
Поддерживает ли поддержка транзакций .net эти более сложные ситуации? Нужно ли указывать какие-то не столь очевидные варианты, чтобы все это работало?
Я слышал, что некоторые из наших SP могут вызвать у нас проблемы, поскольку некоторые транзакции совершают отдельные транзакции. Кто-нибудь знает, обрабатывает ли этот конкретный сценарий TransactionScope?
Предполагаю, вы используете довольно много SP и триггеров? Моя команда (мне не так много) особенно беспокоит SP, у которых есть свои собственные вложенные транзакции. Также у нас есть несколько триггеров/индексов, которые должны поддерживать целостность, и если мы вставляем в table1-column1, триггер вставляет в table2-column2, и если эти таблицы когда-либо выходили из синхронизации, это было бы очень плохо. Любая разработка, которую вы можете предоставить, будет высоко оценена. Спасибо за ваш первоначальный ответ. – Sublimemm
Спасибо за совет по MTC, мы уже столкнулись с этим и запустили его на обоих клиентских серверах. Если бы только я мог прочитать ваш комментарий несколько месяцев назад, я бы не потратил 3 дня на то, чтобы выяснить, почему мой оператор SIMPLE не работал: 0 – Sublimemm
@Sublimemm. У вас может быть столько триггеров, сколько нужно, добавив строки в столько таблиц, сколько вы хотите. Использование TransactionScope будет обрабатывать фиксацию и откат всего лишь штрафа. Но вы просите о нарушении или откате транзакций в хранимых процедурах. Вы не должны этого делать (ИМО). –