подключение к зеркальным базам данных после отработки отказа

У меня есть два зеркальных SQL-сервера (например, A и B). Я написал простую программу на C# (подключение через SqlConnection), которая вставляет строки в БД. Когда я делаю отработку отказа на сервере А, программа выдает исключение, затем я пытаюсь переподключиться и получаю исключение по тайм-ауту (**A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0**).

Когда я перезапускаю приложение, соединение успешно устанавливается (к серверу B). Далее делаю отказоустойчивость на сервере Б, программа выдает исключение, потом пытаюсь переподключиться, и получается - подключение к А без перезапуска программы.

Моя строка подключения:

Data Source=SERVER_A;Failover Partner=SERVER_B;Initial Catalog=TEST_DB;persist security info=True;user id=USER_LOGIN;password=USER_PASS;Connection Timeout=60;

Я также пытаюсь установить большой тайм-аут (60 секунд) и пытаюсь очистить все пулы sqlconnection, очистить один пул по соединению, но это не работает.

Интересный факт: если я использую доменный логин и пароль, все работает нормально! (SID пользователя тот же)


person Serhii    schedule 03.07.2014    source источник
comment
Кэширование отказоустойчивого партнера подробно описано здесь blogs.msdn.com/b/spike/archive/2010/12/08/   -  person ta.speot.is    schedule 03.07.2014
comment
Спасибо за комментарий (вчера видел эту страницу), но это мне не поможет...   -  person Serhii    schedule 03.07.2014


Ответы (1)


Трудно сказать, в чем конкретно у вас проблема. Возможно, это связано с тем, что аварийное переключение происходит не мгновенно и не может передавать состояние запроса — см. https://dba.stackexchange.com/questions/27528/can-availability-groups-provide-seamless-failover-with-no-query-failures. Если ваше приложение немедленно повторяет запрос, отказоустойчивый узел может все еще находиться в процессе принятия на себя функций и поэтому не готов принимать соединения.

person MonkeyPushButton    schedule 14.07.2014