Поскольку в прошлый раз я столкнулся с проблемой обработки транзакций в веб-сервисе, я случайно сделал интересное открытие о настройке списка строк подключения OracleConnection во время отладки программы.
Я читал статью раньше, но не могу вспомнить, что это было. В статье говорилось, что лучше всего установить для параметра enlist значение false. В то время я не вдавался в подробности, почему для него следует установить значение false. моя программа enlist=false была написана напрямую. Только сейчас я обнаружил, что существует тонкая связь между настройкой enlist и обработкой транзакций.
Менеджеры транзакций обычно используют два метода управления: один называется облегченным управлением транзакциями, называемым LTM, а другой называется oleX TM. При простой фазовой отправке обычно используется LTM, тогда как при распределенной обработке транзакций обычно используется 2PC, поэтому используется метод oleX TM.
Если enlist=false, это означает, что последующие транзакции не будут зарегистрированы в текущей транзакции, поэтому текущая транзакция не станет корневой транзакции. Если в программе используется распределенная обработка транзакций, она может выполняться некорректно (я это не проверял). В это время программа сообщает TM использовать LTM для управления.
Если enlist=true, то процесс сообщает TM, что им необходимо управлять с помощью oleX TM. В это время управление распределенными транзакциями будет автоматически включено, поэтому, если в строке подключения установлено enlist=true, если используется база данных oracle. тогда фон будет При вызове oramts.dll, если служба MTS for Oracle не установлена в среде разработки, появится сообщение о том, что oramts.dll не найден. Вы можете скачать установочный пакет этого сервиса с сайта Oracle. Я не знаю, почему Oracle не предоставляет отдельный установочный пакет, а загружает его в комплекте с odac.
Что произойдет, если вы не настроите enlist? Это зависит от того, использует ли ваша программа распределенные транзакции или общую обработку транзакций. ТМ автоматически отреагирует на запрос программы.
Вывод: Enlist имеет определенный контроль над регистрацией транзакций. Если мое описание неверно, пожалуйста, помогите меня исправить.
Адрес ссылки: http://yanrongpi.cnblogs.com/archive/2006/07/13/450189.html.