다음을 통해 공유


SQL Server의 가용성 복제본에서 Read-Only 액세스를 구성하기

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

보조 복제본에 대해 읽기 전용 액세스를 활성화했을 때의 영향과 연결 액세스 소개에 관한 정보를 알아보려면 가용성 복제본에 대한 클라이언트 연결 액세스(SQL Server) 및 활성 보조 복제본: 읽기 가능한 보조 복제본(AlwaysOn 가용성 그룹)에 대해 참조하십시오.

시작하기 전에

사전 요구 사항 및 제한 사항

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

안전

권한

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

SQL Server Management Studio 사용

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

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

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

  3. 복제본을 변경할 가용성 그룹을 선택하세요.

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

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

    • 보조 역할의 경우 다음과 같이 읽기 가능한 보조 드롭 목록에서 새 값을 선택합니다.

      아니요
      이 복제본의 보조 데이터베이스에 대한 사용자 연결이 허용되지 않습니다. 읽기 액세스에는 사용할 수 없습니다. 기본 설정입니다.

      읽기 전용
      이 복제본의 보조 데이터베이스에 대한 읽기 전용 연결만 허용됩니다. 보조 데이터베이스는 모두 읽기 액세스에 사용할 수 있습니다.


      모든 연결은 이 복제본의 보조 데이터베이스에 대해 허용되지만 읽기 액세스에만 허용됩니다. 보조 데이터베이스는 모두 읽기 액세스에 사용할 수 있습니다.

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

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

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

Transact-SQL 사용

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

비고

이 절차의 예시는 이 섹션 후반부의 예제(Transact-SQL)를 참조하세요.

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

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

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

      보조_역할 ( 연결 허용 = { 없음 | 읽기 전용 | 전체 } )

      어디,

      아니오
      이 복제본의 보조 데이터베이스에 대한 직접 연결은 허용되지 않습니다. 읽기 액세스에는 사용할 수 없습니다. 기본 설정입니다.

      읽기 전용
      이 복제본의 보조 데이터베이스에 대한 읽기 전용 연결만 허용됩니다. 보조 데이터베이스는 모두 읽기 액세스에 사용할 수 있습니다.

      전체
      모든 연결은 이 복제본의 보조 데이터베이스에 대해 허용되지만 읽기 액세스에만 허용됩니다. 보조 데이터베이스는 모두 읽기 액세스에 사용할 수 있습니다.

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

    PRIMARY_ROLE ( ALLOW_CONNECTIONS = { 읽기_쓰기 | 전체 } )

    어디,

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

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

예제 (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. 가용성 그룹에 가용성 복제본을 추가할 때 cmdlet을 New-SqlAvailabilityReplica 사용합니다. 기존 가용성 복제본을 수정할 때 cmdlet을 Set-SqlAvailabilityReplica 사용합니다. 관련 매개 변수는 다음과 같습니다.

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

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

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

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

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

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

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

    비고

    cmdlet의 구문을 확인하려면 SQL Server 2014 PowerShell 환경에서 Get-Help cmdlet을 사용하세요. 자세한 내용은 SQL Server PowerShell 도움말을 참조하세요.

SQL Server PowerShell 공급자를 설정하고 사용하려면 SQL Server 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

후속 작업: 가용성 복제본에 대한 Read-Only 액세스를 구성한 후

읽기 가능한 보조 복제본에 대한 읽기 전용 액세스

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

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

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

읽기/쓰기 데이터베이스를 식별하려면 READ_WRITE 값으로 지정합니다.

관련 작업

관련 내용

또한 참조하십시오

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