Координатор распределенных транзакций windows 10 что это

Обновлено: 03.07.2024

По умолчанию каждая система использует свой локальный диспетчер транзакций службы DTC (Distributed Transaction Coordinator) для инициирования и согласования транзакций. Однако можно настроить компьютер на использование диспетчера транзакций службы DTC другой системы в качестве координатора транзакций по умолчанию. Диспетчер транзакций DTC в заданной системе используется как координатор транзакций каждый раз, когда клиент в локальной системе начинает транзакцию DTC и не указывает в явном виде координатор транзакций. Координатор транзакций по умолчанию согласовывает все транзакции, которые инициируются службой COM+ или любым другим клиентом, использующим транзакции. Координатор транзакций по умолчанию также функционирует как координатор транзакций для всех диспетчеров ресурсов в локальной системе, которые вовлечены в какую-либо транзакцию DTC.

Система, выбираемая в качестве координатора по умолчанию, должна быть надежной. Сетевое подключение к системе координатора транзакций по умолчанию также должно быть надежным. В противном случае спецификация координатора транзакций по умолчанию может уменьшить доступность службы DTC в локальной системе.

Если решено использовать удаленный координатор транзакций по умолчанию, и компьютер, и удаленный координатор транзакций должны быть настроены на разрешение сетевого доступа к службе DTC. Описание процедуры разрешения сетевого доступа к службе DTC см. в разделе Настройка безопасности DTC.

Для выполнения этой процедуры необходимо входить в группу администраторы или обладать эквивалентными разрешениями. Дополнительные сведения см. в подразделе «Дополнительная информация» данного раздела.

Откройте оснастку «Службы компонентов».

В оснастке «Службы компонентов» щелкните правой кнопкой компьютер, для которого хотите изменить параметры координатора транзакций (например, Мой компьютер), а затем щелкните Свойства.

В диалоговом окне свойств компьютера перейдите на вкладку MSDTC.

Снимите флажок использовать локальный координатор.

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

Дополнительная информация

  • Оснастка «Службы компонентов» больше не входит в группу «Администрирование». Чтобы открыть оснастку «Службы компонентов», нажмите кнопку Пуск. В текстовом поле введите команду dcomcnfg и нажмите клавишу ВВОД.

Откройте оснастку «Службы компонентов».

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

В диалоговом окне свойств компьютера перейдите на вкладку MSDTC.

Установите флажок использовать локальный координатор.

Дополнительная информация

  • Оснастка «Службы компонентов» исключена из компонента «Администрирование». Чтобы открыть оснастку «Службы компонентов», нажмите кнопку Пуск. В текстовом поле введите команду dcomcnfg и нажмите клавишу ВВОД.

В этой лекции вы ознакомитесь с продуктом Microsoft Distributed Transaction Coordinator (MS DTC – координатор распределенных транзакций ), позволяющим осуществлять доступ к нескольким источникам данных из одной транзакции базы данных , обеспечивая при этом целостность данных. Как вы увидите в этой лекции, MS DTC используется для многих целей, и услуги, которые он обеспечивает, требуются многим типам приложений.

MS DTC является частью служб компонентов ( Component Services) – набора продуктов и технологий, включенного в Microsoft Windows 2000, который разработан на основе нескольких служб Microsoft Windows NT. В частности, службы компонентов основываются на технологиях Component Object Model ( COM ) и Distributed COM ( DCOM ), Microsoft Transaction Server , Microsoft Internet Information Server и Microsoft Message Queue Server . В службах компонентов Windows 2000 модели COM и DCOM развились до следующего уровня – COM +. Приложения COM + и другие системные службы образуют Windows 2000 Component Services.

Прежде чем перейти к подробному описанию MS DTC, в этой лекции дается введение в технологии, используемые в Component Services. Этот обзор даст вам достаточный объем информации, чтобы решить, можете ли вы получить преимущества от использования этих технологий в вашей среде.

Обзор Component Services

Component Services состоит из ряда отдельных продуктов и утилит, управление которыми осуществляется из одной консоли управления. Консоль управления Component Services – это оснастка консоли Microsoft Management Console ( MMC ). В состав Component Services входят следующие утилиты и продукты:

  • Службы приложений COM+
  • MS DTC
  • Службы Event Viewer
  • Системные службы
  • Система Microsoft Message Queuing

Для запуска управляющей утилиты Component Services щелкните на кнопке Start, укажите пункт Programs (Программы), укажите пункт Administrative Tools (Администрирование) и затем выберите Component Services. Появится консоль администрирования Component Services (рис. 25.1).


увеличить изображение
Рис. 25.1. . Консоль администрирования Component Services
Службы приложений COM+

Приложения COM+ спроектированы и разработаны в соответствии со спецификацией Microsoft COM+. COM+ является расширением модели COM, способствующей созданию и развертыванию распределенных приложений в рамках предприятия. Усовершенствования, внесенные в COM+, упрощают повышение уровня безопасности и включение компонентов управления очередями в ваши приложения.

Вы можете администрировать и конфигурировать компоненты приложений COM+ из консоли администрирования Component Services. Для доступа к вашим приложениям COM+ раскройте папки Component Services, Computers (Компьютеры), My Computer (Мой компьютер) и затем COM+ Applications (Приложения COM+) (рис. 25.2).


Рис. 25.2. Просмотр приложений COM+ в консоли администрирования Component Services
MS DTC

Как видно из предыдущего рисунка, под папкой COM+ Applications консоли администрирования Component Services находится папка для DTC ( Distributed Transaction Coordinator). MS DTC подробно описывается ниже в этой лекции, поэтому он здесь не рассматривается.

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

  1. Одной транзакции.
  2. Это могут быть несколько разнообразных баз данных таких как Oracle, MS SQL Server и PostgreSQL.
  3. Отклик на CRUD операцию может быть значительным.
  4. Последовательность вставки не важна.

Опция №1. Приложение С++ и ODBC драйвер (вызов Координатора распределенных транзакций Microsoft (MSDTC) для SQL Server по-владению)

Координатор распределенных транзакций Microsoft (MSDTC) позволяет приложениям расширять или распределять транзакции по двум или более экземплярам SQL Server. Распределенная транзакция работает, даже если два экземпляра размещены на разных компьютерах.

MSDTC работает для Microsoft SQL Server только локально, и недоступен для облачной службы базы данных Microsoft Azure SQL.

MSDTC вызывается драйвером собственного клиента SQL Server для Open Database Connectivity (ODBC), когда ваша программа C++ управляет распределенной транзакцией. Драйвер ODBC для собственного клиента имеет диспетчер транзакций, совместимый со стандартом XA Open Distributed Transaction Processing (DTP). Это соответствие требуется MSDTC. Как правило, все команды управления транзакциями отправляются через этот драйвер ODBC для собственного клиента. Последовательность следующая:

Приложение ODBC для собственного клиента C ++ запускает транзакцию, вызывая SQLSetConnectAttr с отключенным режимом автоматической фиксации.
Приложение обновляет некоторые данные на SQL Server X на компьютере A.
Приложение обновляет некоторые данные на SQL Server Y на компьютере B.
В случае сбоя обновления на SQL Server Y все незафиксированные обновления в обоих экземплярах SQL Server откатываются.
Наконец, приложение завершает транзакцию, вызывая SQLEndTran (1) с параметром SQL_COMMIT или SQL_ROLLBACK.

(1) MSDTC может быть вызван без ODBC. В таком случае MSDTC становится менеджером транзакций, и приложение больше не использует SQLEndTran.

Только одна распределенная транзакция.

Предположим, что ваше приложение ODBC для собственного клиента C ++ зачислено в распределенную транзакцию. Затем приложение зачисляется во вторую распределенную транзакцию. В этом случае драйвер ODBC собственного клиента SQL Server покидает исходную распределенную транзакцию и включается в новую распределенную транзакцию.

Подробнее о MSDTC можно прочитать тут.

MSDTC не поддерживается ни для базы данных SQL Azure, ни для хранилища данных SQL Azure.

В следующем примере показано, как использовать класс TransactionScope для определения блока кода для участия в транзакции.

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

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

Вы можете использовать API DbContext.Database для запуска, фиксации и отката транзакций. В следующем примере показаны две операции SaveChanges () и запрос LINQ, выполняемый в одной транзакции.

Не все поставщики баз данных поддерживают транзакции. Некоторые провайдеры могут выдавать или не выполнять операции при вызове API транзакций.

А раз так, то делаем собственный home-made координатор распределенных транзакций (КРТ).

Один из вариантов реализации это распределенные транзакции основанные на микросервисах (смотрим тут). Этот вариант не плох, но он требует серьезной доработки Web API для всех систем вовлеченных в транзакцию.

А потому, нам нужен немного другой механизм. Ниже приведен общий подход к разработке КРТ.


Как видно из схемы главной идеей является создание и хранение с обновляемым статусом записи транзакции хранящейся в мастер-базе (или таблице). Даная модель КРТ позволяет реализовать распределенные транзакции соответствующие требованиям:

  • атомарности
  • согласованности
  • изолированности
  • долговечности

Таким образом, КРТ в простой форме может быть успешно реализован как часть приложения, или как отдельное настраиваемое и независимое решение (что лучше).

Еще раз уточню что распределенная транзакция это по определению одномоментное сохранение информации без ее изменения, но с возможностью картирования в схемы данных различных баз данных. Так что если вам нужно при фиксировании инцидентов в приемном покое больницы (пулевое ранение) раскидывать в тот же момент времени данные по другим базам, например, в МВД, ФСБ и страховые компании, то данный подход вам безусловно поможет. Этот же механизм может прекрасно работать в финансовых учреждениях.

Надеюсь этот подход показался вам интересным, пишите что вы об этом думаете, коллеги и друзья!


Всем привет Поговорим про непонятный процесс msdtc.exe, что это такое вообще. Значит этого процесса у меня раньше не было, я его не видел, однако когда поставил новую Windows 7, то он появился. В принципе было еще несколько новых процессов, которых раньше не видел. Что хорошо, что msdtc.exe процессор не нагружает, оперативки много не кушает.

Вот процесс msdtc.exe в диспетчере задач:


Как я уже писал, много он оперативы не потребляет, и процессор не грузит, а значит что скорее всего это не вирус. Если грузит процессор, то это странно и может быть вирус! Увы ребята, но такое тоже может быть, так что знайте об этом. В конце статьи я вам дам несколько утилит для проверки компа на вирусы, ну если захотите конечно проверить

Запускается msdtc.exe вот из этой папки:


Также на картинке можете посмотреть инфу в этой всплывающей подсказке, ну это так, на заметку вам так бы сказать

Значит что мы вообще имеем в итоге? Процесс msdtc.exe непонятный, для чего он нужен наверно понятно только суперским виндовским спецам, поэтому что тут можно сделать? Да, вы можете искать инфу в интернете, но думаю, что это будет долго и нудно и вам это надоест. Вразумительной инфы то ведь просто нет! Поэтому я предлагаю сделать то, что иногда делаю я, если вижу непонятный процесс мне.

Нужно его просто отключить безопасным способом. То есть ничего такого, что навредить системе, то ничего такого мы делать не будем.

Значит смотрите, я узнал, что msdtc.exe работает под такой службой как Координатор распределенных транзакций (сокращенное имя MSDTC). То есть можно сделать вывод, что службу можно отключить. Все верно. Но все ли так просто? Нет, не все. Дело в том что могут быть глюки, это ведь служба нам непонятна, как и сам процесс. Поэтому мы службу вырубим, а потом, если что, ну если будут каике-то глюки, то вы должны быстро ее обратно включить. Для этого запомните, что имя службы это такое:

Координатор распределенных транзакций

Ну а остальное, я сейчас покажу. Значит сперва вообще заходим в диспетчер задач, там идем на вкладку Службы и там нажимаем кнопку с таким же названием Службы:


Ну и теперь, в списке служб находим Координатор распределенных транзакций и нажимаем по ней два раза:


Как нажали два раза, то появится вот такое окошко:


Вот это окошко, это свойства службы. Хотя я бы назвал это окно управленским. Ну ладно, смотрите, вот в этом окне как сейчас, то это так должно быть по умолчанию. То есть если что, вы выставляете все как показано на картинке выше, хотя главное из всего, это только Тип запуска: Вручную. Ну и как службу остановить, для этого вы просто выбираете в Тип запуска: Остановлена и потом еще нажимаете кнопку Остановить. ВСЕ, СЛУЖБА ОТКЛЮЧЕНА, теперь если что, то вы выбираете в Тип запуска: Вручную, и потом еще можете нажать кнопку Запустить, это чтобы ВОССТАНОВИТЬ РАБОТУ СЛУЖБЫ.

Фух, ну думаю что понятно все тут обьяснил. Если вы вдруг не можете отключить эту службу, ну мало ли, а процесс висит да и еще грузит, то на этот случай у меня есть решение. О нем я писал, когда отключал SearchUI.exe в Windows 10, но для Windows 7 там все аналогично! В общем если что, посмотрите, если проблема с msdtc.exe есть, то эта инфа может вам помочь.

Ну и как обещал, я вам дам некоторые утилиты, которые просканируют комп на вирусы. Если вы думаете что это все вирусы у вас хозяйничают, то ничего отключать не нужно, сначала вы проверьте утилитами, а потом уже смотрите по ситуэйшине. Значит какие утилиты? Первая, это AdwCleaner, находит те вирусы, КОТОРЫЕ ОБЫЧНЫЕ АНТИВИРУСЫ НЕ ВИДЯТ, ибо это РЕКЛАМНЫЕ ВИРУСЫ. Антивирусы их не ловят, потому что мол, ну они пароли не крадут и не взламывают ничего, они только показывают вам рекламу: или в браузере, или на рабочем столе, или все вместе. Мое мнение что такие вирусы все равно опасные. Вторая утилита, это уже известная, это Dr.Web CureIt!, находит все серьезные вирусы, трояны, черви, в общем тут спору нет, крутая утилита. Также ищет и рекламное и шпионское ПО. Рекомендую две утилиты к применению, они годные

Хочу еще немного добавить по поводу AdwCleaner, значит тут с ней прикол есть такой, короче она удаляет браузер Амиго. Почему? Ну потому что он часто ставится как-то втихаря, как я не знаю, но такое есть, ну вот и многие юзеры недовольны этим всем. Поэтому AdwCleaner удаляет браузер Амиго, потому что это типа прога, которая сама залазит на комп. Так что учтите, если вам нравится Амиго, то тогда используйте утилиту HitmanPro, она ВРОДЕ БЫ не удаляет Амиго!

Ну все ребята, на этом все, надеюсь что все вам тут было понятно. Удачи вам и поменьше глюков в компе

MSDTC обнаружил ошибку

MSDTC обнаружил ошибку на вашем компьютере? Не волнуйтесь, у нас есть правильные решения для вас. Некоторые пользователи Windows сообщали об ошибках при включении местоположения получения WCF-Custom. Ошибка обычно отображается в следующем формате: MSDTC обнаружил ошибку (HR = 0x80000171) при попытке установить безопасное соединение с системой.

Координатор распределенных транзакций Microsoft (MSDTC) позволяет контролировать координацию транзакций между менеджерами ресурсов и приложениями. Кроме того, хотя MSDTC полагается на топологию сети базовых компонентов, транзакция может охватывать несколько DTC по всей вашей сети.

Однако доступ к сетевому DTC должен быть включен на всех экземплярах MS DTC, которые участвуют в транзакции; Это позволяет координировать транзакции по сети.

Решение 1. Включите доступ по сети DTC

Одним из быстрых решений проблемы с ошибкой является включение Network DTC Access для транзакций MS DTC. Вы можете сделать это в компоненте службы. Выполните следующие действия, чтобы включить доступ по сети DTC:

msdtc обнаружил ошибку

  • Перейдите в Пуск, введите «dcomcnfg» без кавычек, а затем нажмите клавишу Enter.
  • Разверните дерево консоли, чтобы найти локальный код неисправности (обычно находится на вкладке служб компонентов).
  • В меню «Действие» выберите «Свойства».
  • Перейдите на вкладку «Безопасность» и внесите следующие изменения:
  • В настройках безопасности установите флажок «Доступ к DTC для сети».
  • В окне «Связь с менеджером транзакций» установите флажки «Разрешить входящий» и «Разрешить исходящий».
  • Нажмите ОК.
  • Затем перезапустите службу координатора распределенных транзакций (MSDTC).

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

Решение 2. Включите исключение брандмауэра для MSDTC

Иногда MSDTC обнаруживает ошибку, вызванную брандмауэром Windows . Брандмауэр Windows предотвращает запуск MSDTC на вашем компьютере; это связано с его защитными мерами от внешнего контроля.

Однако вы можете обойти эту «стену», включив исключение брандмауэра для MSDTC. Вот как это сделать:

Решение 3. Исключите MSDTC в настройках антивируса

Вот как это сделать в Защитнике Windows:

msdtc обнаружил ошибку

  • Запустите Центр Защитника Защитника Windows
  • Теперь перейдите к настройкам защиты от вирусов и угроз
  • Выберите исключения
  • Нажмите «Добавить или удалить исключения»
  • Теперь выберите «Добавить исключение» и добавьте DTC.
  • Перезагрузите компьютер

Решение 4. Включите правило для PPTP

Вот как это сделать:

Для входящих правил : щелкните правой кнопкой мыши «Маршрутизация и удаленный доступ (PPTP-In)», выберите «Включить правило». Для исходящих правил : щелкните правой кнопкой мыши «Маршрутизация и удаленный доступ (PPTP-Out)», выберите «Включить правило».

В заключение мы рекомендуем вам также проверить диалоговое окно настроек безопасности MSDTC, чтобы узнать подробности, касающиеся MSDTC, обнаружившего ошибку (HR = 0x80000171). Дайте нам знать, как вы смогли решить эту проблему. Не стесняйтесь комментировать ниже.

Читайте также: