Какие механизмы используются зеркальным отображением SQL Server 2008 для уведомления драйвера о том, что первичный отказал? - PullRequest
2 голосов
/ 24 октября 2011
  • У меня есть база данных, которая зеркалируется с помощью зеркального отображения SQL 2008.

  • У меня есть Java-приложение, работающее в Linux с использованием Microsoft SQL драйверы JDBC типа 4.

  • У меня есть эта установка, дублированная как среда QA.

  • В моей среде контроля качества, когда я вручную переключаю базу данных, если успешное соединение уже выполнено, аварийное переключение был полностью прозрачным. Мне не нужно было ничего реализовывать в чтобы получить заявку, чтобы поговорить с новым принципом (Старый зеркало).

  • В реальной среде соединения перестают работать, как только я вручную при сбое.

    В реальной среде и в средах контроля качества существует несколько различий, но я бы не счел основополагающим для этого процесса то, что связь между базами данных очень локализована в обеих ситуациях и нет брандмауэров (за исключением встроенных в Windows Server 2008) между моим java-приложением и блоками Windows под управлением SQL 2008.
    У кого-нибудь есть идеи о том, как я могу диагностировать эту проблему? Или кто-нибудь может сказать мне, как происходит эта прозрачность отработки отказа, чтобы я сам мог решить, как ее диагностировать?

1 Ответ

1 голос
/ 08 ноября 2011

Это поведение обрабатывается поставщиком SQL Server как часть поведения перенаправления клиента. Это было частью драйвера SQL Server 2005 JDBC (Java Database Connectivity) 1.1, я не уверен, что этот поставщик был непосредственно использован для новых драйверов типа 4?

В вашей рабочей среде ваше приложение успешно подключается к основному серверу до его переключения при сбое, поэтому оно может кэшировать отказоустойчивого партнера и использовать его при сбое?

Конечно, вы можете явно указать партнера по отработке отказа в строке подключения, что является рекомендуемой практикой:

jdbc:sqlserver://serverA:1433; databaseName=AdventureWorks; integratedSecurity=true; failoverPartner=serverB

Полная документация о поведении перенаправления может быть найдена здесь .

Добавление документации по отказоустойчивости здесь предполагает, что это может быть ручное рассмотрение.

...