0

ミラーリング データベースをセットアップしました (コンピューター名: 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 に手動でフェールオーバーすると、アプリケーションは再び同じ例外をスローします。

テスト アプリケーションのコンピューターの「C:\Windows\System32\drivers\etc\host」に SQL-Mirr の IP アドレスを追加してみます。アプリケーションは正常に動作します。エラーなしで任意に 2 つの DB をフェールオーバーできます。

私はこの問題に混乱しています。ホストファイルの変更を避けるためのアイデアはありますか? ご協力いただきありがとうございます。

4

1 に答える 1

0

DTC 構成で「リモート クライアントを許可する」を有効にする必要があります。

于 2015-11-05T08:49:04.947 に答える