Влияние устаревшего имени участника, являющегося резервным сервером
Администратор базы данных может в любой момент изменить имя участника, являющегося резервным сервером. Следовательно, предоставленное клиентом имя участника, являющегося резервным сервером, может оказаться неактуальным или устаревшим. Например, участник, являющийся резервным сервером, с именем Partner_B заменяется другим экземпляром сервера Partner_C. Если клиент указал в качестве имени резервного участника, то указанное имя станет устаревшим. Если указанное клиентом имя участника, являющегося резервным сервером, устарело, то поведение поставщика доступа к данным будет равнозначно ситуации, когда клиент не сообщил этого имени.
Например, клиент использует одну строку соединения для последовательности из четырех попыток соединения: В строке соединения имя начального участника — Partner_A, а имя участника, являющегося резервным сервером, — Partner_B:
"Server=Partner_A; Failover Partner=Partner_B; Database=AdventureWorks"
В следующей таблице показаны четыре конфигурации участников и указано, будет ли работать данная строка соединения при подключении клиента в первый раз.
Примечание |
|---|
Приложение может следить за изменениями конфигурации и изменять строку соединения соответствующим образом. Это требует дополнительного кода, но снимает с администратора часть забот. |
Конфигурация |
Основной сервер |
Зеркальный сервер |
Поведение при попытке подключиться с указанием серверов 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. В обоих случаях происходит ошибка, и в конце концов превышается время ожидания запроса соединения, что приводит к его ошибке. |
См. также
Примечание