Always On 可用性グループ内のレプリカに対するクライアント接続の種類Types of client connections to replicas within an Always On availability group

適用対象: はいSQL Server いいえAzure SQL Database いいえAzure Synapse Analytics (SQL DW) いいえParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

AlwaysOn 可用性グループでは、1 つまたは複数の可用性レプリカを構成して、セカンダリ ロールで実行しているとき (つまり、セカンダリ レプリカとして実行しているとき) に読み取り専用接続を許可することができます。In an Always On availability group, you can configure one or more availability replicas to allow read-only connections when running under the secondary role (that is, when running as a secondary replica). 各可用性レプリカをプライマリ ロールで実行しているとき (つまり、プライマリ レプリカとして実行しているとき) に、読み取り専用接続を許可または除外するように構成することもできます。You can also configure each availability replica to allow or exclude read-only connections when running under the primary role (that is, when running as the primary replica).

特定の可用性グループのプライマリ データベースまたはセカンダリ データベースに対するクライアント アクセスを容易にするために、可用性グループ リスナーを定義する必要があります。To facilitate client access to primary or secondary databases of a given availability group, you should define an availability group listener. 既定では、可用性グループ リスナーは、着信接続をプライマリ レプリカにダイレクトします。By default, the availability group listener directs incoming connections to the primary replica. ただし、可用性グループは、読み取り専用ルーティングをサポートするように構成できます。これにより、可用性グループ リスナーが、読み取りを目的としたアプリケーションの接続要求を読み取り可能なセカンダリ レプリカにリダイレクトできます。However, you can configure an availability group to support read-only routing, which enables its availability group listener to redirect the connection requests of read-intent applications to a readable secondary replica. 詳細については、このトピックの後の「 可用性グループの読み取り専用ルーティングの構成 (SQL Server)など) を含め、セカンダリ レプリカをホストするサーバー インスタンス上の読み書き可能なデータベースには書き込むことができます。For more information, see Configure Read-Only Routing for an Availability Group (SQL Server).

フェールオーバー中に、セカンダリ レプリカはプライマリ ロールに移行し、元のプライマリ レプリカはセカンダリ レプリカに移行します。During a failover, a secondary replica transitions to the primary role and the former primary replica transitions to the secondary role. フェールオーバー プロセス中に、プライマリ レプリカとセカンダリ レプリカの両方に対するクライアント接続がすべて終了されます。During the failover process, all client connections to both the primary replica and secondary replicas are terminated. フェールオーバー後にクライアントが可用性グループ リスナーに再接続すると、リスナーは、クライアントを新しいプライマリ レプリカに再接続します。ただし、読み取りを目的とした接続要求は除きます。After the failover, when a client reconnects to the availability group listener, the listener reconnects the client to the new primary replica, except for a read-intent connect request. クライアントとサーバーのインスタンスと、少なくとも 1 つの読み取り可能なセカンダリ レプリカで、新しいプライマリ レプリカをホストする読み取り専用ルーティングが構成された場合、読み取りを目的とした接続要求は、クライアントが必要とするタイプの接続アクセスをサポートするセカンダリ レプリカに再ルーティングされます。If read-only routing is configured on the client and on the server instances that hosts the new primary replica and on at least one readable secondary replica, read-intent connection requests are re-routed to a secondary replica that supports the type of connection access that the client requires. フェールオーバー後にクライアントが快適にサービスを利用できるように、すべての可用性レプリカのセカンダリ ロールとプライマリ ロールに対して接続アクセスを構成することが重要です。To ensure a graceful client experience after a failover, it is important to configure connection access for both the secondary and primary roles of every availability replica.

注意

クライアント接続要求を処理する可用性グループ リスナーの詳細については、「 可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server)」をご参照ください。For information about the availability group listener, which handles client connection requests, see Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server).

セカンダリ ロールでサポートされる接続アクセスの種類Types of Connection Access Supported by the Secondary Role

セカンダリ ロールは、次に示すように 3 種類のクライアント接続をサポートします。The secondary role supports three alternatives for client connections, as follows:

接続不可No connections
ユーザーの接続は許可されません。No user connections are allowed. セカンダリ データベースは読み取りアクセスでは利用できません。Secondary databases are not available for read access. これは、セカンダリ ロールの既定の動作です。This is the default behavior in the secondary role.

読み取りを目的とした接続のみOnly read-intent connections
セカンダリ データベースは、 アプリケーションの目的 接続プロパティが ReadOnly (読み取り目的の接続) に設定されている接続に対してのみ利用できます。The secondary database(s) are available only for connection for which the Application Intent connection property is set to ReadOnly (read-intent connections).

この接続プロパティの詳細については、「 SQL Server Native Client の HADR サポート」を参照してください。For information about this connection property, see SQL Server Native Client Support for High Availability, Disaster Recovery.

読み取り専用接続の許可Allow any read-only connection
セカンダリ データベースは、すべて読み取りアクセス接続に利用できます。The secondary database(s) are all available for read access connections. このオプションでは、下位バージョンのクライアントを接続できます。This option allows lower versioned clients to connect.

詳細については、「 可用性レプリカでの読み取り専用アクセスの構成 (SQL Server)が存在する必要があります。For more information, see Configure Read-Only Access on an Availability Replica (SQL Server).

プライマリ ロールでサポートされる接続アクセスの種類Types of Connection Access Supported by the Primary Role

プライマリ ロールは、次に示すように 2 種類のクライアント接続をサポートします。The primary role supports two alternatives for client connections, as follows:

すべての接続を許可するAll connections are allowed
プライマリ データベースに対する読み取り/書き込み接続と読み取り専用接続の両方が許可されます。Both read-write and read-only connections are allowed to primary databases. これは、プライマリ ロールの既定の動作です。This is the default behavior for the primary role.

読み取り/書き込接続のみを許可するAllow only read-write connections
アプリケーションの目的 接続プロパティが ReadWrite に設定されるか、または値が設定されていない場合、接続が許可されます。When the Application Intent connection property is set to ReadWrite or is not set, the connection is allowed. Application Intent 接続文字列キーワードが ReadOnly に設定されている接続は許可されません。Connections for which the Application Intent connection string keyword is set to ReadOnly are not allowed. 読み取り/書き込み接続のみを許可することにより、読み取りを目的としたワークロードが誤ってプライマリ レプリカに接続されるのを防ぐことができます。Allowing only read-write connections can help prevent your customers from connecting a read-intent work load to the primary replica by mistake.

この接続プロパティの詳細については、「 Using Connection String Keywords with SQL Server Native Client」を参照してください。For information about this connection property, see Using Connection String Keywords with SQL Server Native Client.

詳細については、「 可用性レプリカでの読み取り専用アクセスの構成 (SQL Server)が存在する必要があります。For more information, see Configure Read-Only Access on an Availability Replica (SQL Server).

接続アクセス構成がクライアント接続に与える影響How the Connection Access Configuration Affects Client Connectivity

レプリカの接続アクセス設定によって、接続試行が失敗するか成功するかが決まります。The connection access settings of a replica determine whether a connection attempt fails or succeeds. 次の表に、特定の接続試行が成功するか失敗するかを接続アクセス設定別に示します。The following table summarizes whether a given connection attempt succeeds or fails for each the connection-access setting.

レプリカのロールReplica Role レプリカでサポートされる接続アクセスConnection Access Supported on Replica 接続の目的Connection Intent 接続の試行の結果Connection-Attempt Result
セカンダリSecondary AllAll 読み取り目的、読み取り/書き込み、または接続目的の指定なしRead-intent, read-write, or no connection intent specified SuccessSuccess
セカンダリSecondary なし (これは、セカンダリの既定の動作です)。None (This is the default secondary behavior.) 読み取り目的、読み取り/書き込み、または接続目的の指定なしRead-intent, read-write, or no connection intent specified 障害Failure
セカンダリSecondary [読み取り目的のみ]Read-intent only 読み取り目的Read-intent SuccessSuccess
セカンダリSecondary [読み取り目的のみ]Read-intent only 読み取り/書き込み、または接続目的の指定なしRead-write or no connection intent specified 障害Failure
プライマリPrimary すべて (これはプライマリの既定の動作です)All (This is the default primary behavior.) 読み取りのみ、読み取り/書き込み、または接続目的の指定なしRead-only, read-write, or no connection intent specified SuccessSuccess
プライマリPrimary 読み取り/書き込みRead-write [読み取り目的のみ]Read-intent only 障害Failure
プライマリPrimary 読み取り/書き込みRead-write 読み取り/書き込み、または接続目的の指定なしRead-write or no connection intent specified SuccessSuccess

クライアント接続要求を処理する可用性グループ リスナーの詳細については、「 可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server)」をご参照ください。For information about configuring an availability group to accept client connections to its replicas, see Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server).

接続のアクセス構成の例Example Connection-Access Configuration

可用性レプリカの接続アクセスの構成内容がそれぞれ異なっている場合、可用性グループがフェールオーバーした後でクライアント接続のサポートが変わる可能性があります。Depending on how different availability replicas are configured for connection access, support for client connections might change after an availability group fails over. たとえば、リモートの非同期コミット セカンダリ レプリカでレポートが実行された可用性グループについて考えてみましょう。For example, consider an availability group for which reporting is performed on remote asynchronous-commit secondary replicas. この可用性グループのデータベースのすべての読み取り専用アプリケーションで、 アプリケーションの目的 接続プロパティが ReadOnlyに設定されているため、すべての読み取り専用接続が読み取りを目的とした接続です。All of the read-only applications for the databases in this availability group set their Application Intent connection property to ReadOnly, so that all read-only connections are read-intent connections.

この例の可用性グループには、メインのコンピューティング センターにある 2 つの同期コミット レプリカと、サテライト サイトにある 2 つの非同期コミット レプリカが含まれています。This example availability group possesses two synchronous-commit replicas at the main computing center and two asynchronous-commit replicas at a satellite site. プライマリ ロールに対しては、すべてのレプリカに読み取り/書き込みアクセスが構成され、どのような状況でもプライマリ レプリカへの読み取りを目的とした接続ができないようになっています。For the primary role, all the replicas are configured for read-write access, which prevents read-intent connections to the primary replica in all situations. 同期コミットのセカンダリ ロールでは、既定の接続アクセス構成 ("なし") が使用されるため、セカンダリ ロールではすべてのクライアント接続が禁止されます。The synchronous commit secondary role uses the default connection-access configuration ("none"), which prevents all client connections under the secondary role. 一方、非同期コミット レプリカは、セカンダリ ロールでの読み取り目的の接続を許可するように構成されています。In contrast, the asynchronous commit replicas are configured to permit read-intent connections under the secondary role. 次の表に、この例の構成をまとめます。The following table summarize this example configuration:

[レプリカ]Replica コミット モードCommit Mode [初期ロール]Initial Role セカンダリ ロールの接続アクセスConnection Access for Secondary Role プライマリ ロールの接続アクセスConnection Access for Primary Role
Replica1Replica1 同期Synchronous プライマリPrimary なしNone 読み取り/書き込みRead-write
Replica2Replica2 同期Synchronous セカンダリSecondary なしNone 読み取り/書き込みRead-write
Replica3Replica3 非同期Asynchronous セカンダリSecondary 読み取り目的のみRead-intentonly 読み取り/書き込みRead-write
Replica4Replica4 非同期Asynchronous セカンダリSecondary [読み取り目的のみ]Read-intent only 読み取り/書き込みRead-write

一般的に、この例のシナリオでは、フェールオーバーは同期コミット レプリカ間でのみ実行され、フェールオーバーの直後に、読み取り目的のアプリケーションが非同期コミット セカンダリ レプリカの 1 つに再接続できます。Typically, in this example scenario, failovers occur only between the synchronous-commit replicas, and immediately after the failover, read-intent applications are able to reconnect to one of the asynchronous-commit secondary replicas. ただし、メインのコンピューティング センターで障害が発生した場合は両方の同期コミット レプリカが失われます。However, when a disaster occurs at the main computing center both synchronous-commit replicas are lost. サテライト サイトのデータベース管理者が、非同期コミット セカンダリ レプリカへの強制フェールオーバーを手動で実行して対処します。The database administrator at the satellite site responds by performing a forced manual failover to an asynchronous-commit secondary replica. 残りのセカンダリ レプリカのセカンダリ データベースは強制フェールオーバーによって中断されるため、読み取り専用のワークロードで使用できなくなります。The secondary databases on the remaining secondary replica are suspended by the forced failover, making them unavailable for read-only workloads. 読み取り/書き込み接続が構成されている新しいプライマリ レプリカでは、読み取り目的のワークロードと読み取り/書き込みワークロードが競合しません。The new primary replica, which is configured for read-write connections, prevents the read-intent workload from competing with the read-write workload. つまり、データベース管理者が残りの非同期コミット セカンダリ レプリカのセカンダリ データベースを再開するまでは、読み取り目的のクライアントはどの可用性レプリカにも接続できません。This means that until the database administrator resumes the secondary databases on the remaining asynchronous-commit secondary replica, read-intent clients cannot connect to any availability replica.

参照See Also

AlwaysOn 可用性グループの概要 (SQL Server) Overview of Always On Availability Groups (SQL Server)
可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server) Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server)
統計Statistics