次の方法で共有


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

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

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

注意

SQL Server Native Client では、クライアントからプリンシパル サーバー インスタンスへの接続は確認しますが、接続したインスタンスが接続文字列のイニシャル パートナー名に指定されたサーバー インスタンスのパートナーかどうかは確認しません。

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

重要な注意事項重要

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

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

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

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