Я настроил зеркальные базы данных (имя компьютера: SQL-Prim, SQL-Mirr, имя домена: sql-1.ooo.org, sql-2.ooo.org). У меня нет AD, и я настраиваю их с общедоступными IP-адресами и доменными именами. Я написал приложение на C # для проверки поведения при отказе. Строка подключения выглядит так:
data source=sql-1.ooo.org;Failover Partner=sql-2.ooo.org;initial catalog=TestDB;User Id={0};Password={1};App=EntityFramework
Приложение C # должно постоянно обновлять данные:
while (true)
{
try
{
using (TestEntities context = new TestEntities())
{
//update data
}
}
catch (Exception ex)
{
//log error
}
System.Threading.Thread.Sleep(1000); //sleep for a while
}
Вначале приложение подключается к SQL-Prim и работает нормально. Когда я вручную переключаюсь с SQL-Prim на SQL-Mirr, приложение выдает исключения:
"The underlying provider failed on Open."
Если я перезапускаю приложение, оно подключается к SQL-Mirror и работает нормально. Затем я снова вручную переключаюсь с SQL-Mirr на SQL-Prim. Приложение продолжает работать нормально. Если я вручную переключаюсь с SQL-Prim на SQL-Mirr, приложение снова генерирует те же исключения.
Я пытаюсь добавить IP-адрес SQL-Mirr в "C: \ Windows \ System32 \ drivers \ etc \ host" на компьютере тестового приложения. Приложение работает хорошо. Я могу переключить 2 БД произвольно без каких-либо ошибок.
Меня смущает эта проблема. Есть ли идея избежать изменения файла хоста? Спасибо за вашу помощь.