Always On 가용성 그룹의 보조 복제본에 대한 읽기 전용 액세스 구성

적용 대상:SQL Server

기본적으로 주 복제본에 대한 읽기/쓰기 및 읽기 전용 액세스가 모두 허용되며 Always On 가용성 그룹의 보조 복제본에 대한 연결은 허용되지 않습니다. 이 항목에서는 SQL Server Management Studio, Transact-SQL 또는 PowerShell을 사용하여 SQL Server에서 Always On 가용성 그룹의 가용성 복제본에 대한 연결 액세스를 구성하는 방법을 설명합니다.

보조 복제본에 대해 읽기 전용 액세스를 사용하도록 설정할 경우의 영향에 대한 자세한 내용과 연결 액세스 소개는 가용성 복제본에 대한 클라이언트 연결 액세스 정보(SQL Server)활성 보조: 읽기 가능한 보조 복제본(Always ON 가용성 그룹)을 참조하세요.

사전 요구 사항 및 제한 사항

  • 다른 연결 액세스를 구성하려면 주 복제본을 호스팅하는 서버 인스턴스에 연결되어 있어야 합니다.

사용 권한

작업 사용 권한
가용성 그룹을 만들 때 복제본을 구성하려면 CREATE AVAILABILITY GROUP 서버 권한, ALTER ANY AVAILABILITY GROUP 권한, CONTROL SERVER 권한 중 하나와 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.
가용성 복제본을 변경하려면 가용성 그룹에 대한 ALTER AVAILABILITY GROUP 권한, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP 권한 또는 CONTROL SERVER 권한이 필요합니다.

SQL Server Management Studio 사용

가용성 복제본에 대한 액세스를 구성하려면

  1. 개체 탐색기에서 주 복제본을 호스팅하는 서버 인스턴스에 연결하고 서버 트리를 화장합니다.

  2. Always On 고가용성 노드 및 가용성 그룹 노드를 확장합니다.

  3. 복제본을 변경하려는 가용성 그룹을 클릭합니다.

  4. 가용성 복제본을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  5. 가용성 복제본 속성 대화 상자에서, 다음과 같이 주 역할 및 보조 역할에 대한 연결 액세스를 변경할 수 있습니다:

    • 보조 역할의 경우에는 읽기 가능한 보조 드롭 목록에서 새 값을 선택합니다:

      문제
      이 복제본의 보조 데이터베이스에 대한 사용자 연결이 허용되지 않습니다. 즉, 읽기 액세스가 가능하지 않습니다. 이것이 기본 설정입니다.

      읽기 의도만 있는 경우
      이 복제본의 보조 데이터베이스에 대한 읽기 전용 연결만 허용됩니다. 즉, 모든 보조 데이터베이스에 대한 읽기 액세스가 가능합니다.


      이 복제본의 보조 데이터베이스에 대한 모든 연결이 허용되지만 읽기 액세스만 가능합니다. 즉, 모든 보조 데이터베이스에 대한 읽기 액세스가 가능합니다.

    • 주 역할의 경우 다음과 같이 주 역할의 연결 드롭 목록에서 새 값을 선택합니다:

      모든 연결 허용
      주 복제본의 데이터베이스에 대한 모든 연결이 허용됩니다. 이것이 기본 설정입니다.

      읽기/쓰기 연결 허용
      애플리케이션 의도 속성이 ReadWrite 로 설정되었거나 애플리케이션 의도 연결 속성이 설정되지 않은 경우에는 연결이 허용됩니다. 애플리케이션 의도의 연결 속성이 ReadOnly으로 설정된 연결은 허용되지 않습니다. 따라서 고객이 읽기 전용 작업을 실수로 주 복제본에 연결하는 것을 방지할 수 있습니다. 애플리케이션 의도 연결 속성에 대한 자세한 내용은 Using Connection String Keywords with SQL Server Native Client을 참조하십시오.

Transact-SQL 사용

가용성 복제본에 대한 액세스를 구성하려면

참고 항목

이 절차에 대한 예제는 이 섹션의 뒷부분에 나오는 예제 (Transact-SQL)를 참조해 주세요.

  1. 주 복제본을 호스팅하는 서버 인스턴스에 연결합니다.

  2. 새 가용성 그룹의 복제본을 지정하려는 경우 CREATE AVAILABILITY GROUP Transact-SQL 문을 사용합니다. 기존 가용성 그룹의 복제본을 추가하거나 수정하려는 경우 ALTER AVAILABILITY GROUPTransact-SQL 문을 사용합니다.

    • 보조 역할에 대한 연결 액세스를 구성하기 위해서는 ADD REPLICA 또는 MODIFY REPLICA WITH 절에서 다음과 같이 SECONDARY_ROLE 옵션을 지정합니다:

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

      여기서,

      아니요
      아니요 이 복제본의 보조 데이터베이스에 대한 직접 연결이 허용되지 않습니다. 즉, 읽기 액세스가 가능하지 않습니다. 이것이 기본 설정입니다.

      READ_ONLY
      이 복제본의 보조 데이터베이스에 대한 읽기 전용 연결만 허용됩니다. 즉, 모든 보조 데이터베이스에 대한 읽기 액세스가 가능합니다.

      ALL
      이 복제본의 보조 데이터베이스에 대한 모든 연결이 허용되지만 읽기 액세스만 가능합니다. 즉, 모든 보조 데이터베이스에 대한 읽기 액세스가 가능합니다.

  3. 주 역할에 대한 연결 액세스를 구성하려면 ADD REPLICA 또는 MODIFY REPLICA WITH 절에서 다음과 같이 PRIMARY_ROLE 옵션을 지정합니다:

    PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )

    여기서,

    READ_WRITE
    애플리케이션 의도 연결 속성이 ReadOnly 로 설정된 연결은 허용되지 않습니다. 애플리케이션 의도 속성이 ReadWrite 로 설정되었거나 애플리케이션 의도 연결 속성이 설정되지 않은 경우에는 연결이 허용됩니다. 애플리케이션 의도 연결 속성에 대한 자세한 내용은 Using Connection String Keywords with SQL Server Native Client을 참조하십시오.

    ALL
    주 복제본의 데이터베이스에 대한 모든 연결이 허용됩니다. 이것이 기본 설정입니다.

예제 (Transact-SQL)

다음 예제에서는 AG2라고 불리는 가용성 그룹에 보조 복제본을 추가합니다. 독립 실행형 서버 인스턴스인 COMPUTER03\HADR_INSTANCE가 새 가용성 복제본을 호스트하도록 지정됩니다. 이 복제본은 주 역할에 대해 읽기/쓰기 연결만 허용하며 보조 역할에 대해 읽기 전용 연결만 허용하도록 구성되어 있습니다.

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 사용

가용성 복제본에 대한 액세스를 구성하려면

참고 항목

코드 예제를 보려면 이 섹션의 뒷부분에 나오는 예제(PowerShell)를 참조해 주세요.

  1. 주 복제본을 호스트하는 서버 인스턴스로 디렉터리(cd)를 변경합니다.

  2. 가용성 그룹에 가용성 복제본을 추가하는 경우 New-SqlAvailabilityReplicacmdlet을 사용합니다. 기존 가용성 복제본을 수정하는 경우 Set-SqlAvailabilityReplica cmdlet을 사용합니다. 관련된 매개 변수는 다음과 같습니다:

    • 보조 역할에 대한 연결 액세스를 구성하려면 ConnectionModeInSecondaryRolesecondary_role_keyword 매개 변수를 지정합니다. 여기에서 secondary_role_keyword 에는 다음 값 중 하나를 사용합니다:

      AllowNoConnections
      보조 복제본의 데이터베이스에 대한 직접 연결이 허용되지 않으며 읽기 액세스를 위해 데이터베이스에 연결할 수 없습니다. 이것이 기본 설정입니다.

      AllowReadIntentConnectionsOnly
      애플리케이션 의도 속성이 ReadOnly로 설정된 경우에 보조 복제본의 데이터베이스에 연결할 수 있습니다. 이 속성에 대한 자세한 내용은 Using Connection String Keywords with SQL Server Native Client을 참조하십시오.

      AllowAllConnections
      보조 복제본의 데이터베이스에 대해 읽기 전용 액세스를 위한 모든 연결이 허용됩니다.

    • 주 역할에 대한 연결 액세스를 구성하려면 ConnectionModeInPrimaryRoleprimary_role_keyword를 지정합니다. 여기서 primary_role_keyword 에는 다음 값 중 하나를 사용합니다.

      AllowReadWriteConnections
      애플리케이션 의도 연결 속성이 ReadOnly 로 설정된 연결은 허용되지 않습니다. 애플리케이션 의도 속성이 ReadWrite 로 설정되었거나 애플리케이션 의도 연결 속성이 설정되지 않은 경우에는 연결이 허용됩니다. 애플리케이션 의도 연결 속성에 대한 자세한 내용은 Using Connection String Keywords with SQL Server Native Client을 참조하십시오.

      AllowAllConnections
      주 복제본의 데이터베이스에 대한 모든 연결이 허용됩니다. 이것이 기본 설정입니다.

    참고 항목

    cmdlet의 구문을 보려면 PowerShell 환경에서 Get-Help SQL Server cmdlet을 사용합니다. 자세한 내용은 Get Help SQL Server PowerShell을 참조하세요.

SQL Server PowerShell 공급자를 설정하고 사용하려면

예제(PowerShell)

다음 예에서는 ConnectionModeInSecondaryRoleConnectionModeInPrimaryRole 매개 변수를 모두 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  
  

후속 작업: 가용성 복제본에 대한 읽기 전용 액세스를 구성한 후의 작업

읽을 수 있는 보조 복제본에 대한 읽기 전용 액세스

  • bcp 유틸리티 또는 sqlcmd 유틸리티를 사용하는 경우 -K ReadOnly 스위치를 지정하여 읽기 전용 액세스를 사용하도록 설정된 보조 복제본에 대한 읽기 전용 액세스를 지정할 수 있습니다.

  • 클라이언트 애플리케이션을 읽을 수 있는 보조 복제본에 연결할 수 있도록 설정하려면:

필수 요소 링크
가용성 그룹에 수신기가 있는지 확인합니다. 가용성 그룹 수신기 만들기 또는 구성(SQL Server)
가용성 그룹에 대한 읽기 전용 라우팅을 구성합니다. 가용성 그룹 수신기 만들기 또는 구성(SQL Server)

장애 조치(Failover) 후 트리거 및 작업에 영향을 줄 수 있는 요소

읽을 수 없는 보조 데이터베이스 또는 읽을 수 있는 보조 데이터베이스에서 실행할 때 실패하는 트리거 및 작업이 있는 경우 트리거와 작업을 스크립팅하여 지정된 복제본에서 데이터베이스가 주 데이터베이스인지 읽을 수 있는 보조 데이터베이스인지 확인해야 합니다. 이 정보를 얻으려면 DATABASEPROPERTYEX 함수를 사용하여 데이터베이스의 Updateability 속성을 반환합니다. 읽기 전용 데이터베이스를 식별하려면 다음과 같이 READ_ONLY를 값으로 지정합니다.

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

읽기 전용 데이터베이스를 식별하려면 다음과 같이 READ_ONLY를 값으로 지정합니다.

관련 작업

관련 내용

참고 항목

Always On 가용성 그룹 개요(SQL Server)
활성 보조: 읽기 가능한 보조 복제본(Always On 가용성 그룹)
가용성 복제본에 대한 클라이언트 연결 액세스 정보