Поделиться через


Влияние устаревшего имени участника, являющегося сервером отработки заказа

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

Например, клиент использует одну строку соединения для последовательности из четырех попыток соединения: В строке соединения имя начального участника — Partner_A, а имя участника, являющегося сервером отработки отказа, — Partner_B:

"Server=Partner_A; Failover Partner=Partner_B; Database=AdventureWorks2008R2"

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

ПримечаниеПримечание

Приложение может следить за изменениями конфигурации и изменять строку соединения соответствующим образом. Это требует дополнительного кода, но снимает с администратора часть забот.

Конфигурация

Основной сервер

Зеркальный сервер

Поведение при попытке подключиться с указанием серверов Partner_A и Partner_B?

Исходная зеркальная конфигурация.

Partner_A

Partner_B

Partner_A сохраняется в кэше в качестве имени изначального участника. Клиент успешно соединяется с сервером Partner_A. Затем клиент загружает имя зеркального сервера, Partner_B, и кэширует его, не учитывая указанное клиентом имя участника отработки отказа.

На сервере Partner_A происходит сбой оборудования и начинается отработка отказа (с отключением клиентов).

Partner_B

нет

В качестве имени изначального участника в кэше все еще указан Partner_A, но сообщенное клиентом имя участника отработки отказа, Partner_B, позволяет клиенту соединиться с текущим основным сервером.

Администратор баз данных прекращает зеркальное отображение (отключая клиентов), заменяет Partner_A на Partner_C и перезапускает зеркальное отображение.

Partner_B

Partner_C

Клиент пытается соединиться с сервером Partner_A и это не удается; затем клиент пытается соединиться с Partner_B (текущему основному серверу) и это завершается успешно. Поставщик доступа к данным загружает имя текущего зеркального сервера, Partner_C и кэширует его в качестве текущего имени участника отработки отказа.

Переход службы на сервер Partner_C производится вручную (с отключением клиентов).

Partner_C

Partner_B

Клиент изначально пытается подключиться к серверу Partner_A, а затем к серверу Partner_B. Обе попытки завершаются неудачно, в результате время ожидания соединения истекает и соединение завершается неудачно.