MSDTC не знает о зеркалировании.Поэтому, когда он регистрирует менеджера ресурсов в распределенной транзакции, он узнает, что RM по его имени, скажем, Server A. После того, как произойдет переключение при сбое, журнал сообщит новому принципалу «Перейти к DTC и посмотреть, каково состояние транзакции T».Новый принципал, названный Сервер B, идет к DTC и говорит: «Я сервер B, каков результат транзакции T?»и DTC скажет ему: «Уходите, я вас не знаю, вы не зачислены в транзакцию T».Это то, что также описано в статье базы знаний:
После отработки отказа новый основной сервер не может подключиться к MS DTC предыдущего основного сервера, который использует тот же идентификатор ресурса.Поэтому новый основной сервер не может получить статус транзакции
. Вы спрашиваете: «Чем это отличается от того, что сервер БД не был зеркально отражен, а просто умер в тот же момент времени?».Разница в том, что если это произойдет, то когда база данных будет восстановлена, она будет восстановлена на на том же сервере , и этот сервер сможет связаться с DTC и попросить откатить распределеннуюсделка, в которой он был зачислен.