Вопрос или проблема
У меня есть два сервера, работающих на SQL 2008 R2 Standard, каждый с экземпляром под названием “MAIN”. У меня есть небольшая тестовая база данных на основном сервере (одна таблица, 13 строк), которую я хочу реплицировать на втором сервере как доказательство концепции для некоторых более крупных баз данных, которые я хочу реплицировать. Я настроил основной сервер как издателя и распределителя и настроил базу данных для выполнения транзакционной репликации. Я скопировал данные на второй сервер через резервное копирование/восстановление, а не через снимок (что мне придется сделать с более крупными базами данных из-за размера базы данных и ограниченной пропускной способности). Я следовал инструкциям здесь:
http://gnawgnu.blogspot.com/2009/11/sql-2008-transactional-replication-and.html
Теперь на подписчике я захожу в Размножение / Локальные подписки / Щелкаю правой кнопкой мыши / Свойства на моей подписке к базе данных. Статус последней синхронизации показывает статус: “Процесс не смог подключиться к распределителю ‘PRIMARYSERVER\MAIN’.”
Данные реплицируются с основного на вторичный. Любая запись, которую я добавляю на основном, появляется на вторичном сервере в течение нескольких секунд.
Является ли распределитель частью системы снимков, которую я не использую, или это часть транзакционной репликации?
Спасибо,
Ланс
Проверьте, запущены ли службы браузеров на всех экземплярах SQL. Вы используете именованный экземпляр? Также посмотрите, работают ли какие-либо задания ресурсами.
Распределитель – это то, что записывают изменения от издателя и ставит их в очередь перед отправкой подписчику.
По умолчанию используется подписка с принудительной отправкой, при которой не требуется подключение от подписчика к распределителю, так как соединение устанавливается от распределителя к подписчику. Исходя из этого, я предполагаю, что есть брандмауэр, блокирующий либо UDP-порт 1434 на издателе, либо брандмауэр, блокирующий TCP-порт, на котором слушает именованный экземпляр на PRIMARYSERVER.
Ответ или решение
Ошибки, связанные с подключением к Дистрибьютору в репликации SQL 2008 R2, являются распространенной проблемой, и важно разобраться в основной причине данной проблемы. Рассмотрим шаги для диагностики и решения проблемы в вашем случае.
Введение
Ваша конфигурация выглядит следующим образом: у вас есть два сервера под управлением SQL 2008 R2 Standard, с экземплярами, названными "MAIN". На основном сервере настроена репликация данных с использованием транзакционной репликации, и данные с основного сервера успешно синхронизируются со вторичным сервером. Однако статус подписки на вторичном сервере указывает на ошибку подключения к Дистрибьютору.
Проблема
Ошибка "The process could not connect to Distributor ‘PRIMARYSERVER\MAIN’" может указывать на несколько потенциальных проблем, включая настройки сети, параметры SQL Server или вопросы конфигурации.
Решение
-
Проверка службы SQL Server Browser:
- Убедитесь, что служба SQL Server Browser запущена на сервере "PRIMARYSERVER". Эта служба помогает обнаруживать экземпляры SQL Server с именем, что может быть критично в рамках отношений между Дистрибьютором и подписчиком.
-
Имя экземпляра:
- Убедитесь, что вы используете правильное имя экземпляра в настройках. Для именованных экземпляров это должно быть указано в формате
PRIMARYSERVER\MAIN
.
- Убедитесь, что вы используете правильное имя экземпляра в настройках. Для именованных экземпляров это должно быть указано в формате
-
Проверка заданий агента SQL Server:
- Просмотр настроек и состояние запланированных заданий SQL Server Agent. Убедитесь, что задания, связанные с репликацией, запущены и работают корректно.
-
Сетевые настройки и фаервол:
- Если у вас используется фаервол, проверьте, открыты ли необходимые порты. Для транзакционной репликации обычно требуются:
- UDP порт 1434 для SQL Server Browser.
- TCP порт – это может быть 1433 (по умолчанию) для служб SQL Server или любой другой, настроенный на вашем именованном экземпляре.
- Попробуйте временно отключить фаервол, чтобы проверить, устраняет ли это проблему с подключением.
- Если у вас используется фаервол, проверьте, открыты ли необходимые порты. Для транзакционной репликации обычно требуются:
-
Настройка репликации:
- Проверьте настройки дистрибьютора в SQL Server Management Studio. Убедитесь, что он правильно настроен и что все параметры указывают на корректный экземпляр и базу данных.
-
Логи SQL Server:
- Проверьте логи SQL Server на наличие ошибок, связанных с подключением или репликацией. Это может предоставить дополнительные подсказки о корне проблемы.
Заключение
Дистрибьютор в системе репликации играет ключевую роль в переносе данных между основным и вторичным серверами. Несмотря на то, что данные в вашем сценарии уже синхронизируются, важным остается устранение ошибки подключения для обеспечения полной функциональности репликации. Следуя вышеописанным шагам, можно локализовать и устранить серые зоны конфигурации, что позволит стабилизировать процесс репликации в дальнейшем. Если проблема будет сохраняться, рекомендуется обратиться к документации или к сообществу SQL Server для получения дополнительной помощи.
Проведение всех этих шагов должно помочь вам устранить проблему с подключением к Дистрибьютору и улучшить вашу репликационную конфигурацию.