Сегодня я столкнулся с интересной проблемой при настройке транзакционной репликации с немедленным обновлением подписки между двумя экземплярами SQL Server 2005. При попытке выполнить хранимую процедуру sp_link_publication на сервере подписчика я получил сообщение об ошибке “Нет активной транзакции”.
После изучения проблемы и обращения к сайту поддержки Microsoft, я нашел статью с названием “Как устранить ошибку 7391, которая возникает при использовании связанного сервера в SQL Server”. Однако, несмотря на то, что я выполнил все требования, изложенные в статье, проблема продолжала оставаться.
После того, как я потратил значительное количество времени на поиск решения, я обратился за помощью к группе системных администраторов. Один из экспертов по системному администрированию предоставил ценную подсказку – проблема вызвана тем, что оба сервера были созданы из одного образа, что привело к идентичным учетным данным MSDTC.
При дальнейшем исследовании я обнаружил сообщение в журнале событий Windows, в котором говорилось, что локальный MS DTC обнаружил, что MS DTC на Server1 имеет тот же уникальный идентификатор, что и локальный MS DTC. Это означало, что два экземпляра MS DTC не могли связываться друг с другом. Эта проблема обычно возникает, когда системы клонируются с использованием не поддерживаемых инструментов клонирования, а не поддерживаемых инструментов, таких как SYSPREP.
Для устранения проблемы я последовал рекомендуемым шагам, запустив ‘msdtc -uninstall’, а затем ‘msdtc -install’ из командной строки. Важно отметить, что запуск ‘msdtc -uninstall’ приведет к потере системой всей информации о конфигурации MS DTC. Однако, после выполнения этих шагов, я смог успешно выполнить хранимую процедуру sp_link_publication.
Этот опыт научил меня тому, что, хотя статьи базы знаний Microsoft могут быть полезными, их нельзя считать окончательным решением для каждой проблемы. Иногда, корень проблемы может находиться за пределами предоставленной документации.
При столкновении с подобными проблемами с распределенными транзакциями в SQL Server важно учитывать такие факторы, как конфигурация сервера, методы клонирования и учетные данные MSDTC. Тщательно исследуя эти аспекты и обращаясь за помощью к компетентным лицам, вы сможете преодолеть трудности и успешно реализовать распределенные транзакции в вашей среде SQL Server.