Установите xact_abort в сценарии мультидатабазы ​​от .net [duplicate]C#

Место общения программистов C#
Ответить
Anonymous
 Установите xact_abort в сценарии мультидатабазы ​​от .net [duplicate]

Сообщение Anonymous »

ситуация
У меня есть код устаревшего .NET в C#, который должен сохранить кучу данных с помощью транзакции. Эти данные распространяются по нескольким базам данных SQL -сервера. Другие базы данных находятся за службой WCF, которая использует структуру объекта. Окружение всех этих вызовов кода сохранения данных является TransactionScope .
До сих пор работает, транзакция переживает все эти вызовы. Координатор распределенной транзакции Microsoft (MSDTC) настроен для него (веб-сервер и базы данных находятся на разных машинах). < /P>
Недавно в результате исследования блокировки я обнаружил о существовании Установите xact_abort на и как это может помочь предотвратить осирот транзакции из -за, например, Тайм -ауты или потери подключения.
Вопрос
Когда и где мне нужно установить этот xact_abort flag , чтобы он был активен в течение всей транзакции? хранящаяся процедура, которая сначала устанавливает флаг, а затем запускает транзакцию (=> SQL Code) или
[*] Откройте dbcontext , установите флаг, а затем запустите транзакцию (= > C# code), используя только этот один dbcontext .

Я не нашел никакого объяснения или примера, который в коде C# начинает Транзакция и после этого открывает несколько dbcontext (через службу WCF и содержащий EF) или SQLConnection s с sqldataadapter s для сохранения данных. Этот флаг должен быть активным для всей транзакции, и не только для первого dbcontext .
я не могу установить флаг на саму транзакцию, поскольку код установил этот флаг (

Код: Выделить всё

SET XACT_ABORT ON
) необходимо вызвать изнутри dbcontext с dbcontext.executestorecommand () или на открытии sqlconnection с sqlcommand.executenonquery () .
Изменить из -за закрытия: < /strong>

относительно комментария о настройке на глобальном уровне для всего сервера базы данных:
< BR /> Мы не имеем управления всеми программами, которые используют базу данных на сервере. Если я правильно понял связанный ответ, он устанавливает опцию для всего сервера, а не на одну базу данных. Установка это не всегда идеальный ответ и может привести к проблемам.

=> Если поведение с OFF является ожидаемой в другой базе данных, это глобальное изменение может вызвать проблемы для них.

=> Как я могу использовать xact_abort в ситуации, которую я описал выше, не влияя на другие базы данных на одном и том же экземпляре SQL Server? < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... o-from-net
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»