다음을 통해 공유


AlwaysOn 가용성 그룹 구성 문제 해결(SQL Server)

이 항목에서는 Always On 가용성 그룹에 대한 서버 인스턴스를 구성하는 일반적인 문제를 해결하는 데 도움이 되는 정보를 제공합니다. 일반적인 구성 문제에는 가용성 그룹을 사용하지 않도록 Always On, 계정이 잘못 구성되고, 데이터베이스 미러링 엔드포인트가 없거나, 엔드포인트에 액세스할 수 없음(오류 1418 SQL Server), 네트워크 액세스가 없고, 데이터베이스 조인 명령이 실패하는 SQL Server(오류 35250) 등이 있습니다.

참고

Always On 가용성 그룹 필수 구성 요소를 충족하는지 확인합니다. 자세한 내용은 AlwaysOn 가용성 그룹(SQL Server)에 대한 필수 구성 요소, 제한 사항 및 권장 사항을 참조하세요.

항목 내용:

섹션 Description
AlwaysOn 가용성 그룹을 사용할 수 없음 Always On 가용성 그룹에 대해 SQL Server instance 사용하도록 설정되지 않은 경우 instance 가용성 그룹 만들기를 지원하지 않으며 가용성 복제본을 호스트할 수 없습니다.
계정 SQL Server 가 실행되고 있는 계정을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다.
엔드포인트 서버 인스턴스의 데이터베이스 미러링 엔드포인트 관련 문제를 진단하는 방법에 대해 설명합니다.
시스템 이름 엔드포인트 URL에서 서버 인스턴스의 시스템 이름을 지정하는 대안이 요약되어 있습니다.
네트워크 액세스 가용성 복제본을 호스팅하는 각 서버 인스턴스에서 TCP를 통해 다른 각 서버 인스턴스의 포트에 액세스할 수 있어야 한다는 요구 사항에 대해 설명합니다.
엔드포인트 액세스(SQL Server 오류 1418) 이 SQL Server 오류 메시지에 대한 정보를 포함합니다.
데이터베이스 조인 실패(SQL Server 오류 35250) 주 복제본 연결이 활성화되지 않아서 가용성 그룹에 대한 보조 데이터베이스 조인에 실패하는 원인과 해결 방법에 대해 설명합니다.
읽기 전용 라우팅이 올바르게 작동하지 않음
관련 작업 가용성 그룹 구성 문제 해결과 특히 관련된 SQL Server 2014 온라인 설명서의 작업 지향 topics 목록이 포함되어 있습니다.
관련 내용 SQL Server 온라인 설명서에 포함되어 있지 않은 관련 리소스 목록을 포함합니다.

AlwaysOn 가용성 그룹을 사용할 수 없음

Always On 가용성 그룹 기능은 SQL Server 2014의 각 인스턴스에서 사용하도록 설정해야 합니다. 자세한 내용은 AlwaysOn 가용성 그룹 활성화 및 비활성화(SQL Server)를 참조하세요.

계정

SQL Server 를 실행하고 있는 계정이 올바르게 구성되어 있어야 합니다.

  1. 계정에 올바른 권한이 있어야 합니다.

    1. 파트너가 동일한 도메인 사용자 계정으로 실행되는 경우 올바른 사용자 로그인이 자동으로 두 master 데이터베이스에 모두 포함됩니다. 데이터베이스에 대한 간단한 보안 구성으로 권장됩니다.

    2. 두 서버 인스턴스가 서로 다른 계정으로 실행되는 경우, 원격 서버 인스턴스의 master 에 각 계정에 대한 로그인을 만들고 이 로그인에 해당 서버 인스턴스의 데이터베이스 미러링 엔드포인트에 연결할 수 있는 CONNECT 권한을 부여해야 합니다. 자세한 내용은데이터베이스 미러링 또는 AlwaysOn 가용성 그룹에 대한 로그인 계정 설정(SQL Server)을 참조하세요.

  2. SQL Server 로컬 시스템, 로컬 서비스 또는 네트워크 서비스와 같은 기본 제공 계정 또는 비도메인 계정으로 실행되는 경우 엔드포인트 인증에 인증서를 사용해야 합니다. 서비스 계정에서 동일한 도메인의 도메인 계정을 사용 중인 경우 모든 복제본 위치의 각 서비스 계정에 연결 권한을 부여하거나, 인증서를 사용할 수 있습니다. 자세한 내용은 데이터베이스 미러링 엔드포인트에 대한 인증서 사용(Transact-SQL)을 참조하세요.

엔드포인트

엔드포인트를 올바르게 구성해야 합니다.

  1. 가용성 복제본을 호스트할 SQL Server 의 각 인스턴스(각 복제본 위치)에 데이터베이스 미러링 엔드포인트가 있는지 확인합니다. 지정된 서버 인스턴스에 데이터베이스 미러링 엔드포인트가 있는지 여부를 확인하려면 sys.database_mirroring_endpoints 카탈로그 뷰를 사용합니다. 자세한 내용은 Windows 인증용 데이터베이스 미러링 엔드포인트 만들기(Transact-SQL) 또는 데이터베이스 미러링 엔드포인트가 아웃바운드 연결에 인증서를 사용하도록 허용(Transact-SQL)을 참조하세요.

  2. 포트 번호가 정확한지 확인합니다.

    현재 서버 인스턴스의 데이터베이스 미러링 엔드포인트와 연결된 포트를 식별하려면 다음 Transact-SQL 문을 사용합니다.

    SELECT type_desc, port FROM sys.tcp_endpoints;
    GO
    
  3. 설명하기 어려운 Always On 가용성 그룹 설정 문제의 경우 각 서버 instance 검사하여 올바른 포트에서 수신 대기하는지 여부를 확인하는 것이 좋습니다. 포트 가용성 확인에 대한 자세한 내용은 MSSQLSERVER_1418을 참조하세요.

  4. 엔드포인트가 시작되었는지 확인합니다(STATE=STARTED). 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    state_desc 열에 대한 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.

    엔드포인트를 시작하려면 다음 Transact-SQL 문을 사용합니다.

    ALTER ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS TCP (LISTENER_PORT = <port_number>)
    FOR database_mirroring (ROLE = ALL);
    GO
    

    자세한 내용은 ALTER ENDPOINT(Transact-SQL)를 참조하세요.

  5. 다른 서버에서 로그인할 경우 CONNECT 권한이 있는지 확인합니다. 엔드포인트에 대한 CONNECT 권한이 있는 사용자를 파악하려면 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.

    SELECT 'Metadata Check';
    SELECT EP.name, SP.STATE, 
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
          AS GRANTOR, 
       SP.TYPE AS PERMISSION,
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
          AS GRANTEE 
       FROM sys.server_permissions SP , sys.endpoints EP
       WHERE SP.major_id = EP.endpoint_id
       ORDER BY Permission,grantor, grantee; 
    GO
    
    

시스템 이름

엔드포인트 URL에서 서버 인스턴스의 시스템 이름에는 시스템을 명확하게 식별하는 모든 이름을 사용할 수 있습니다. 서버 주소는 시스템 이름(시스템이 같은 도메인에 있는 경우), 정규화된 도메인 이름 또는 IP 주소(가급적 고정 IP 주소)일 수 있습니다. 정규화된 도메인 이름을 사용하는 것이 좋습니다. 자세한 내용은 가용성 복제본 추가 또는 수정 시 엔드포인트 URL 지정(SQL Server)을 참조하세요.

네트워크 액세스

가용성 복제본을 호스팅하는 각 서버 인스턴스에서 TCP를 통해 다른 각 서버 인스턴스의 포트에 액세스할 수 있어야 합니다. 이는 서버 인스턴스가 서로 트러스트하지 않는 다른 도메인(트러스트되지 않은 도메인)에 있을 경우 특히 유용합니다.

엔드포인트 액세스(SQL Server 오류 1418)

이 SQL Server 메시지는 엔드포인트 URL에 지정된 서버 네트워크 주소가 없거나 도달할 수 없음을 나타내며 네트워크 주소 이름을 확인한 후 명령을 다시 실행하도록 제안합니다. 자세한 내용은 MSSQLSERVER_1418을 참조하세요.

데이터베이스 조인 실패(SQL Server 오류 35250)

이 섹션에서는 주 복제본 연결이 활성화되지 않아서 가용성 그룹에 대한 보조 데이터베이스 조인에 실패하는 원인과 해결 방법에 대해 설명합니다.

해결 방법:

  1. 방화벽 설정을 검사하여 주 복제본과 보조 복제본(기본적으로 포트 5022)을 호스팅하는 서버 인스턴스 사이의 엔드포인트 포트 통신을 허용하는지 여부를 확인합니다.

  2. 네트워크 서비스 계정에 엔드포인트에 대한 연결 권한이 있는지 여부를 확인합니다.

읽기 전용 라우팅이 올바르게 작동하지 않음

다음 구성 값 설정을 확인하고 필요한 경우 수정합니다.

On... 작업 주석 링크
확인란 현재 주 복제본 가용성 그룹 수신기가 온라인 상태인지 확인합니다. 수신기가 온라인 상태인지 여부를 확인하려면:

SELECT * FROM sys.dm_tcp_listener_states;

오프라인 수신기를 다시 시작하려면:

ALTER AVAILABILITY GROUP myAG RESTART LISTENER 'myAG_Listener';
sys.dm_tcp_listener_states(Transact-SQL)

ALTER AVAILABILITY GROUP(Transact-SQL)
확인란 현재 주 복제본 READ_ONLY_ROUTING_LIST에 읽기 가능한 보조 복제본을 호스팅하는 서버 인스턴스만 포함되어 있는지 확인합니다. 읽을 수 있는 보조 복제본을 식별하려면 sys.availability_replicas(secondary_role_allow_connections_desc 열)

읽기 전용 라우팅 목록을 보려면: sys.availability_read_only_routing_lists

읽기 전용 라우팅 목록을 변경하려면: ALTER AVAILABILITY GROUP
sys.availability_replicas(Transact-SQL)

sys.availability_read_only_routing_lists(Transact-SQL)

ALTER AVAILABILITY GROUP(Transact-SQL)
확인란 read_only_routing_list에 있는 모든 복제본 Windows 방화벽이 READ_ONLY_ROUTING_URL 포트를 차단하고 있는지 확인합니다. - 데이터베이스 엔진 액세스에 대한 Windows 방화벽 구성
확인란 read_only_routing_list에 있는 모든 복제본 SQL Server 구성 관리자 다음을 확인합니다.

SQL Server 원격 연결이 사용되고 있는지 여부

TCP/IP가 사용되고 있는지 여부

IP 주소가 올바르게 구성되어 있는지 여부
- 서버 속성 보기 또는 변경(SQL Server)

특정 TCP 포트로 수신하도록 서버 구성(SQL Server 구성 관리자)
확인란 read_only_routing_list에 있는 모든 복제본 READ_ONLY_ROUTING_URL(TCP://system-address:port)에 올바른 FQDN(정규화된 도메인 이름) 및 포트 번호가 포함되어 있는지 확인합니다. - AlwaysOn에 대한 read_only_routing_url 계산

sys.availability_replicas(Transact-SQL)

ALTER AVAILABILITY GROUP(Transact-SQL)
확인란 클라이언트 시스템 클라이언트 드라이버가 읽기 전용 라우팅을 지원하는지 확인합니다. - AlwaysOn 클라이언트 연결(SQL Server)

관련 작업

관련 내용

참고 항목

데이터베이스 미러링 및 AlwaysOn 가용성 그룹(SQL Server)클라이언트 네트워크 구성필수 구성 요소, 제한 사항 및 AlwaysOn 가용성 그룹에 대한 권장 사항(SQL Server)에 대한 전송 보안