Я правильно настроил репликацию транзакций в SQL Server между двумя серверами. У меня есть издатель, настроенный на локальное распространение и единую публикацию транзакций с обновляемыми подписками. Второй сервер подписывается на публикацию и настроен на одновременную фиксацию изменений обратно издателю.
Когда машина подписчика не работает, изменения могут быть внесены на издателе без каких-либо ошибок. Когда подписчик возвращается в сеть, изменения распространяются от издателя к подписчику, как и ожидалось.
Однако, когда издатель не работает, попытки внести изменения на подписчике не будут зафиксированы. Когда я пытаюсь выполнить фиксацию, когда издатель не работает или служба MSDTC остановлена, я получаю сообщение об ошибке, указывающее, что MSDTC на сервере публикации недоступен. Когда я пытаюсь выполнить фиксацию, когда механизм базы данных SQL Server издателя остановлен, я получаю сообщение об ошибке, указывающее, что не удалось выполнить вход в SQL Server на сервере публикации.
Это ожидаемое поведение? То есть предотвращает ли моя конфигурация подписывающийся сервер от фиксации транзакций, пока издатель не в сети?
Любая помощь будет оценена. Спасибо!
Из Как работают обновляемые подписки:
Для каждого изменения, сделанного на подписчике, MSDTC управляет двухэтапной операцией фиксации между издателем и подписчиком, фиксирующим изменение.
Таким образом, совершенно очевидно, что подписчик и издатель должны быть в сети, чтобы применить какие-либо изменения к подписчику при использовании немедленного обновления. Его также очень явно называют Вот:
- Немедленное обновление. Издатель и подписчик должен быть подключен для обновления данных у Подписчика.
Если вы хотите, чтобы подписчик был доступен для обновлений, когда издатель находится в автономном режиме, вам необходимо изучить Обновления в очереди.