古いフェールオーバー パートナー名の影響
データベース管理者はフェールオーバー パートナーをいつでも変更できます。このため、クライアントが指定したパートナー名が古い場合があります。たとえば、別のサーバー インスタンス Partner_C で置き換えられる Partner_B というフェールオーバー パートナーを考えてみます。クライアントがフェールオーバー パートナー名として Partner_B を指定した場合、それは古い名前です。クライアント指定のフェールオーバー パートナー名が古い場合、データ アクセス プロバイダーは、クライアントでフェールオーバー パートナー名が指定されていない場合と同じように動作します。
たとえば、クライアントによって 1 つの接続文字列が 4 回の接続試行に使用される場合を検討します。この接続文字列では、次のようにイニシャル パートナー名が Partner_A で、フェールオーバー パートナー名が Partner_B です。
"Server=Partner_A; Failover Partner=Partner_B; Database=AdventureWorks2008R2"
"Server=Partner_A; Failover Partner=Partner_B; Database=AdventureWorks2008R2"
次の表は、4 つのパートナー構成と、それぞれの構成でこの接続文字列がクライアントの初回接続時に機能するかどうかを示しています。
注 |
---|
アプリケーションでは、構成の変更を追跡し、その変更に応じて接続文字列を変更することができます。これには追加のコードが必要ですが、管理上の負担は軽減されます。 |
構成 |
プリンシパル サーバー |
ミラー サーバー |
Partner_A と Partner_B を指定して接続を試行するときの動作 |
---|---|---|---|
元のミラー化構成 |
Partner_A |
Partner_B |
Partner_A はイニシャル パートナー名としてキャッシュに保存されます。クライアントは、Partner_A への接続に成功します。クライアントは、Partner_B というミラー サーバーの名前をダウンロードしてキャッシュに保存し、クライアント指定のフェールオーバー パートナー名を無視します。 |
Partner_A でハードウェア障害が発生し、フェールオーバーを実行 (クライアントの接続を切断) |
Partner_B |
なし |
Partner_A はイニシャル パートナー名としてキャッシュに保存されていますが、クライアント指定のフェールオーバー パートナー名 Partner_B を使用して、クライアントは現在のプリンシパル サーバーに接続できます。 |
データベース管理者がミラー化を停止し (クライアントの接続を切断)、Partner_A を Partner_C に置き換えて、ミラー化を再開 |
Partner_B |
Partner_C |
クライアントは Partner_A への接続を試行して失敗します。その後、Partner_B (現在のプリンシパル サーバー) への接続を試行して成功します。データ アクセス プロバイダーは現在のミラー サーバー名である Partner_C をダウンロードし、現在のフェールオーバー パートナー名としてキャッシュに保存します。 |
サービスを手動で Partner_C にフェールオーバー (クライアントの接続を切断) |
Partner_C |
Partner_B |
クライアントはまず Partner_A に接続してから Partner_B に接続しようとします。どちらの名前でも接続に失敗し、最終的には接続要求がタイムアウトになって失敗します。 |