データベース ミラーリング セッションへの再接続

新規 : 2006 年 4 月 14 日

データベース ミラーリングのフェールオーバーなどのなんらかの理由でデータベース ミラーリング セッションに対して確立された接続が失敗し、アプリケーションが最初のサーバーに再接続を試みると、データ アクセス プロバイダは、クライアントのキャッシュに保存されたフェールオーバー パートナー名を使用して再接続を試みる場合があります。ただし、再接続は自動的には行われず、アプリケーションではエラーを検出することになります。その後、アプリケーションは失敗した接続を閉じて、同じ接続文字列属性を使用して新しい接続を開く必要があります。この時点で、データ アクセス プロバイダがフェールオーバー パートナーに接続をリダイレクトします。この名前で識別されるサーバー インスタンスが現在のプリンシパル サーバーの場合は、通常、接続試行は成功します。トランザクションがコミットされたかロールバックされたかはっきりしない場合、アプリケーションでは、スタンドアロンのサーバー インスタンスに再接続するときと同じように、トランザクションの状態を確認する必要があります。

再接続は、接続文字列でフェールオーバー パートナー名を指定した最初の接続と同様に行われます。最初の接続試行が失敗すると、クライアントがプリンシパル サーバーに接続するか、データ アクセス プロバイダがタイムアウトするまで、イニシャル パートナー名とフェールオーバー パートナー名を交互に使用して接続が試行されます。

ms366199.note(ja-jp,SQL.90).gifメモ :
SQL Native Client では、クライアントからプリンシパル サーバー インスタンスへの接続は確認しますが、接続したインスタンスが接続文字列のイニシャル パートナー名に指定されたサーバー インスタンスのパートナーかどうかは確認しません。

接続に TCP/IP を使用し、クライアントで Windows XP 以降を使用している場合は、接続再試行アルゴリズムによって、接続試行の各ラウンドに割り当てられる時間が決まります。詳細については、「接続再試行アルゴリズム (TCP/IP 接続用)」を参照してください。

ms366199.note(ja-jp,SQL.90).gif重要 :
クライアントとデータベース間の接続が切断された場合、データ アクセス プロバイダでは再接続が試行されません。クライアントから新規接続要求を実行する必要があります。また、接続が切断されたためにアプリケーションがシャットダウンされると、キャッシュに保存されているパートナー名は失われます。プリンシパル サーバーが使用できなくなったために接続が切断されると、接続文字列でフェールオーバー パートナー名を指定する以外に、アプリケーションがミラー サーバーに再接続できる方法はありません。

クライアント アプリケーションでのリダイレクトの影響

フェールオーバー後、データ アクセス プロバイダは、現在のプリンシパル サーバー インスタンスに接続をリダイレクトします。ただし、リダイレクトはクライアント側では認識されません。リダイレクトされた接続は、クライアントにはイニシャル パートナー名で特定されたサーバー インスタンスへの接続のように見えます。イニシャル パートナーが現在ミラー サーバーの場合、クライアントはミラー サーバーに接続され、ミラー データベースを更新しているように見えます。ただし、実際には、クライアントは現在のプリンシパル データベースであるフェールオーバー パートナーにリダイレクトされています。また、クライアントは、新しいプリンシパル データベースを更新しています。

クライアントがフェールオーバー パートナーにリダイレクトされた後、Transact-SQL USE ステートメントを使用して別のデータベースを使用すると、予期しない結果が発生する場合があります。これは、現在のプリンシパル サーバー インスタンス (フェールオーバー パートナー) で元のプリンシパル サーバー (イニシャル パートナー) とは異なるデータベースを使用している場合に発生することがあります。

参照

概念

接続再試行アルゴリズム (TCP/IP 接続用)
ネットワーク プロトコルと TDS エンドポイント
データベース ミラーリングの概要
データベース ミラーリング中に発生する可能性のあるエラー

その他の技術情報

SQL Server データベース エンジンへの接続
SQL Native Client での接続文字列キーワードの使用
SQL Server Browser の使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手