Always On 可用性グループのセカンダリ レプリカへの読み取り専用アクセスの構成Configure read-only access to a secondary replica of an Always On availability group

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

既定では、プライマリ レプリカへの読み取り/書き込みアクセスと読み取りを目的としたアクセスの両方が許可され、AlwaysOn 可用性グループのセカンダリ レプリカへの接続は許可されません。By default both read-write and read-intent access are allowed to the primary replica and no connections are allowed to secondary replicas of an Always On availability group. このトピックでは、 SQL Server 2017SQL Server 2017SQL Server Management StudioSQL Server Management Studio、または PowerShell を使用して、 Transact-SQLTransact-SQLの AlwaysOn 可用性グループの可用性レプリカに対して接続アクセスを構成する方法について説明します。This topic describes how to configure connection access on an availability replica of an Always On availability group in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell.

セカンダリ レプリカに対して読み取り専用アクセスを有効にすることによる影響と、接続アクセスの概要については、「可用性レプリカに対するクライアント接続アクセスについて (SQL Server)」および「アクティブなセカンダリ:読み取り可能なセカンダリ レプリカ (Always On 可用性グループ)」を参照してください。For information about the implications of enabling read-only access for a secondary replica and for an introduction to connection access, see About Client Connection Access to Availability Replicas (SQL Server) and Active Secondaries: Readable Secondary Replicas (Always On Availability Groups).

前提条件と制限Prerequisites and Restrictions

  • 別の接続アクセスを構成するには、プライマリ レプリカをホストするサーバー インスタンスに接続している必要があります。To configure different connection access, you must be connected to the server instance that hosts the primary replica.

PermissionsPermissions

タスクTask アクセス許可Permissions
可用性グループの作成時にレプリカを構成するTo configure replicas when creating an availability group sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、CONTROL SERVER 権限のいずれかが必要です。Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.
可用性レプリカを変更するTo modify an availability replica 可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。Requires ALTER AVAILABILITY GROUP permission on the availability group, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

SQL Server Management Studio の使用Using SQL Server Management Studio

可用性レプリカに対してアクセスを構成するにはTo configure access on an availability replica

  1. オブジェクト エクスプローラーで、プライマリ レプリカをホストするサーバー インスタンスに接続し、サーバー ツリーを展開します。In Object Explorer, connect to the server instance that hosts the primary replica, and expand the server tree.

  2. [AlwaysOn 高可用性] ノードと [可用性グループ] ノードを展開します。Expand the Always On High Availability node and the Availability Groups node.

  3. 変更するレプリカが含まれる可用性グループをクリックします。Click the availability group whose replica you want to change.

  4. 可用性レプリカを右クリックし、 [プロパティ] をクリックします。Right-click the availability replica, and click Properties.

  5. [可用性レプリカ プロパティ] ダイアログ ボックスで、プライマリ ロールおよびセカンダリ ロールの接続アクセスを、次のように変更できます。In the Availability Replica Properties dialog box, you can change the connection access for the primary role and for the secondary role, as follows:

    • セカンダリ ロールの場合は、 [読み取り可能セカンダリ] ボックスの一覧から新しい値を選択します。値は次のとおりです。For the secondary role, select a new value from the Readable secondary drop list, as follows:

      いいえNo
      このレプリカのセカンダリ データベースに対するユーザー接続は禁止されます。No user connections are allowed to secondary databases of this replica. 読み取りアクセスで利用することはできません。They are not available for read access. これが既定の設定です。This is the default setting.

      [読み取り目的のみ]Read-intent only
      このレプリカのセカンダリ データベースに対する接続は、読み取り専用でのみ許可されます。Only read-only connections are allowed to secondary databases of this replica. セカンダリ データベースはすべて読み取りアクセスで利用できます。The secondary database(s) are all available for read access.

      はいYes
      読み取りアクセスに限り、このレプリカのセカンダリ データベースに対するすべての接続が許可されます。All connections are allowed to secondary databases of this replica, but only for read access. セカンダリ データベースはすべて読み取りアクセスで利用できます。The secondary database(s) are all available for read access.

    • プライマリ ロールの場合は、 [プライマリ ロールの接続] ボックスの一覧から新しい値を選択します。値は次のとおりです。For the primary role, select a new value from the Connections in primary role drop list, as follows:

      [すべての接続を許可]Allow all connections
      プライマリ レプリカのデータベースに対するすべての接続が許可されます。All connections are allowed to the databases in the primary replica. これが既定の設定です。This is the default setting.

      [読み取り/書き込みの接続を許可]Allow read/write connections
      Application Intent プロパティが ReadWrite に設定されている場合、または Application Intent 接続プロパティが設定されていない場合は、接続が許可されます。When the Application Intent property is set to ReadWrite or the Application Intent connection property is not set, the connection is allowed. Application Intent 接続プロパティが ReadOnly に設定されている接続は許可されません。Connections where the Application Intent connection property is set to ReadOnly are not allowed. これにより、読み取りを目的としたワークロードが誤ってプライマリ レプリカに接続されるのを防ぐことができます。This can help prevent customers from connecting a read-intent work load to the primary replica by mistake. "アプリケーションの目的" 接続プロパティの詳細については、「 Using Connection String Keywords with SQL Server Native Client」を参照してください。For more information about Application Intent connection property, see Using Connection String Keywords with SQL Server Native Client.

Transact-SQL の使用Using Transact-SQL

可用性レプリカに対してアクセスを構成するにはTo configure access on an availability replica

注意

この手順の例については、このセクションの後半の「 例 (Transact-SQL)」を参照してください。For an example of this procedure, see Example (Transact-SQL), later in this section.

  1. プライマリ レプリカをホストするサーバー インスタンスに接続します。Connect to the server instance that hosts the primary replica.

  2. 新しい可用性グループのレプリカを指定する場合は、 CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL ステートメントを使用します。If you are specifying a replica for a new availability group, use the CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL statement. 既存の可用性グループのレプリカを追加または変更する場合は、 ALTER AVAILABILITY GROUPTransact-SQLTransact-SQL ステートメントを使用します。If you are adding or modifying a replica of an existing availability group, use the ALTER AVAILABILITY GROUPTransact-SQLTransact-SQL statement.

    • セカンダリ ロールの接続アクセスを構成するには、ADD REPLICA 句または MODIFY REPLICA WITH 句で、SECONDARY_ROLE オプションを次のように指定します。To configure connection access for the secondary role, in the ADD REPLICA or MODIFY REPLICA WITH clause, specify the SECONDARY_ROLE option, as follows:

      SECONDARY_ROLE ( ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } )SECONDARY_ROLE ( ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } )

      パラメーターの説明where,

      いいえNO
      このレプリカのセカンダリ データベースに対する直接接続は禁止されます。No direct connections are allowed to secondary databases of this replica. 読み取りアクセスで利用することはできません。They are not available for read access. これが既定の設定です。This is the default setting.

      READ_ONLYREAD_ONLY
      このレプリカのセカンダリ データベースに対する接続は、読み取り専用でのみ許可されます。Only read-only connections are allowed to secondary databases of this replica. セカンダリ データベースはすべて読み取りアクセスで利用できます。The secondary database(s) are all available for read access.

      ALLALL
      読み取りアクセスに限り、このレプリカのセカンダリ データベースに対するすべての接続が許可されます。All connections are allowed to secondary databases of this replica, but only for read access. セカンダリ データベースはすべて読み取りアクセスで利用できます。The secondary database(s) are all available for read access.

  3. プライマリ ロールの接続アクセスを構成するには、ADD REPLICA 句または MODIFY REPLICA WITH 句で、PRIMARY_ROLE オプションを次のように指定します。To configure connection access for the primary role, in the ADD REPLICA or MODIFY REPLICA WITH clause, specify the PRIMARY_ROLE option, as follows:

    PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )

    パラメーターの説明where,

    READ_WRITEREAD_WRITE
    Application Intent 接続プロパティが ReadOnly に設定されている接続は許可されません。Connections where the Application Intent connection property is set to ReadOnly are disallowed. Application Intent プロパティが ReadWrite に設定されている場合、または Application Intent 接続プロパティが設定されていない場合は、接続が許可されます。When the Application Intent property is set to ReadWrite or the Application Intent connection property is not set, the connection is allowed. "アプリケーションの目的" 接続プロパティの詳細については、「 Using Connection String Keywords with SQL Server Native Client」を参照してください。For more information about Application Intent connection property, see Using Connection String Keywords with SQL Server Native Client.

    ALLALL
    プライマリ レプリカのデータベースに対するすべての接続が許可されます。All connections are allowed to the databases in the primary replica. これが既定の設定です。This is the default setting.

例 (Transact-SQL)Example (Transact-SQL)

次の例では、セカンダリ レプリカを AG2という名前の可用性グループに追加します。The following example adds a secondary replica to an availability group named AG2. 新しい可用性レプリカをホストするため、スタンドアロン サーバー インスタンスの COMPUTER03\HADR_INSTANCEが指定されています。A stand-alone server instance, COMPUTER03\HADR_INSTANCE, is specified to host the new availability replica. このレプリカは、プライマリ ロールに対してのみ読み取り/書き込み接続を許可し、セカンダリ ロールに対しては読み取りを目的とした接続のみを許可するように構成されています。This replica configured to allow only read-write connections for the primary role and to allow only read-intent connections for secondary role.

ALTER AVAILABILITY GROUP AG2   
   ADD REPLICA ON   
      'COMPUTER03\HADR_INSTANCE' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER03:7022',  
         PRIMARY_ROLE ( ALLOW_CONNECTIONS = READ_WRITE ),  
         SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY )  
         );   
GO  

PowerShell の使用Using PowerShell

可用性レプリカに対してアクセスを構成するにはTo configure access on an availability replica

注意

コード例については、このセクションの後半の「 例 (PowerShell)」を参照してください。For a code example, see Example (PowerShell), later in this section.

  1. プライマリ レプリカをホストするサーバー インスタンスにディレクトリを変更 (cd) します 。Change directory (cd) to the server instance that hosts the primary replica.

  2. 可用性グループに可用性レプリカを追加する場合は、 New-SqlAvailabilityReplica コマンドレットを使用します。When adding an availability replica to an availability group, use the New-SqlAvailabilityReplica cmdlet. 既存の可用性レプリカを変更する場合は、 Set-SqlAvailabilityReplica コマンドレットを使用します。When modifying an existing availability replica, use the Set-SqlAvailabilityReplica cmdlet. 関連するパラメーターは次のとおりです。The relevant parameters are as follows:

    • セカンダリ ロールの接続アクセスを構成するには、 ConnectionModeInSecondaryRolesecondary_role_keyword パラメーターを指定します。 secondary_role_keyword は次のいずれかの値になります。To configure connection access for the secondary role, specify the ConnectionModeInSecondaryRolesecondary_role_keyword parameter, where secondary_role_keyword equals one of the following values:

      AllowNoConnectionsAllowNoConnections
      セカンダリ レプリカのデータベースに対する直接接続は許可されず、データベースに対して読み取りアクセスを実行できません。No direct connections are allowed to the databases in the secondary replica and the databases are not available for read access. これが既定の設定です。This is the default setting.

      AllowReadIntentConnectionsOnlyAllowReadIntentConnectionsOnly
      Application Intent プロパティが ReadOnlyに設定されている場合に限り、セカンダリ レプリカのデータベースに対する接続が許可されます。Connections are allowed only to the databases in the secondary replica where the Application Intent property is set to ReadOnly. このプロパティの詳細については、「 Using Connection String Keywords with SQL Server Native Client」を参照してください。For more information about this property, see Using Connection String Keywords with SQL Server Native Client.

      AllowAllConnectionsAllowAllConnections
      読み取り専用アクセスに限り、セカンダリ レプリカのデータベースに対するすべての接続が許可されます。All connections are allowed to the databases in the secondary replica for read-only access.

    • プライマリ ロールの接続アクセスを構成するには、 ConnectionModeInPrimaryRole_primary_role_keyword_を指定します。 primary_role_keyword は次のいずれかの値になります。To configure connection access for the primary role, specify ConnectionModeInPrimaryRoleprimary_role_keyword, where primary_role_keyword equals one of the following values:

      AllowReadWriteConnectionsAllowReadWriteConnections
      Application Intent 接続プロパティが ReadOnly に設定されている接続は許可されません。Connections where the Application Intent connection property is set to ReadOnly are disallowed. Application Intent プロパティが ReadWrite に設定されている場合、または Application Intent 接続プロパティが設定されていない場合は、接続が許可されます。When the Application Intent property is set to ReadWrite or the Application Intent connection property is not set, the connection is allowed. "アプリケーションの目的" 接続プロパティの詳細については、「 Using Connection String Keywords with SQL Server Native Client」を参照してください。For more information about Application Intent connection property, see Using Connection String Keywords with SQL Server Native Client.

      AllowAllConnectionsAllowAllConnections
      プライマリ レプリカのデータベースに対するすべての接続が許可されます。All connections are allowed to the databases in the primary replica. これが既定の設定です。This is the default setting.

    注意

    コマンドレットの構文を表示するには、 PowerShell 環境で Get-Help SQL Server 2017SQL Server 2017 コマンドレットを使用します。To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL Server 2017SQL Server 2017 PowerShell environment. 詳細については、「 Get Help SQL Server PowerShell」を参照してください。For more information, see Get Help SQL Server PowerShell.

SQL Server PowerShell プロバイダーを設定して使用するにはTo set up and use the SQL Server PowerShell provider

例 (PowerShell)Example (PowerShell)

以下の例は、 ConnectionModeInSecondaryRole パラメーターと ConnectionModeInPrimaryRole パラメーターの両方を AllowAllConnectionsに設定しています。The following example, sets the both the ConnectionModeInSecondaryRole and ConnectionModeInPrimaryRole parameters to AllowAllConnections.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg  
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"  
Set-SqlAvailabilityReplica -ConnectionModeInSecondaryRole "AllowAllConnections" `   
-InputObject $primaryReplica  
Set-SqlAvailabilityReplica -ConnectionModeInPrimaryRole "AllowAllConnections" `   
-InputObject $primaryReplica  
  

補足情報:可用性レプリカに対する読み取り専用アクセスの構成後Follow Up: After Configuring Read-Only Access for an Availability Replica

読み取り可能なセカンダリ レプリカに対する読み取り専用アクセスRead-only access to a readable secondary replica

フェールオーバー後にトリガーとジョブに影響する可能性がある要因Factors that might affect triggers and jobs after a failover

読み取り可能でないセカンダリ データベースまたは読み取り可能なセカンダリ データベースで実行されたときに失敗するトリガーとジョブがある場合は、トリガーとジョブをスクリプト化して、特定のレプリカに対して、データベースがプライマリ データベースか読み取り可能なセカンダリ データベースかを確認する必要があります。If you have triggers and jobs that will fail when running on a non-readable secondary database or on a readable secondary database, you need to script the triggers and jobs to check on a given replica to determine whether the database is a primary database or is a readable secondary database. この情報を入手するには、データベースの Updateability プロパティを返す DATABASEPROPERTYEX 関数を使用します。To obtain this information, use the DATABASEPROPERTYEX function to return the Updateability property of the database. 読み取り専用データベースを識別するには、次のように、値として READ_ONLY を指定します。To identify a read-only database, specify READ_ONLY as the value, as follows:

DATABASEPROPERTYEX([db name],'UpdateAbility') = N'READ_ONLY'  

読み取り/書き込みデータベースを識別するには、値として READ_WRITE を指定します。To identify a read-write database, specify READ_WRITE as the value.

関連タスクRelated Tasks

関連コンテンツRelated Content

参照See Also

AlwaysOn 可用性グループの概要 (SQL Server) Overview of Always On Availability Groups (SQL Server)
アクティブなセカンダリ:読み取り可能なセカンダリ レプリカ (Always On 可用性グループ) Active Secondaries: Readable Secondary Replicas (Always On Availability Groups)
可用性レプリカに対するクライアント接続アクセスについて (SQL Server)About Client Connection Access to Availability Replicas (SQL Server)