Приложение C # не может подключиться к зеркалированию SQL Server после ручного переключения при отказе

Я настроил зеркальные базы данных (имя компьютера: 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 БД произвольно без каких-либо ошибок.

Меня смущает эта проблема. Есть ли идея избежать изменения файла хоста? Спасибо за вашу помощь.


person liam.h    schedule 05.11.2015    source источник


Ответы (1)


вам необходимо включить «разрешить удаленных клиентов» в конфигурации DTC.

person amit dayama    schedule 05.11.2015