Always On 가용성 그룹 구성 문제 해결(SQL Server)Troubleshoot Always On Availability Groups Configuration (SQL Server)

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 Always On 가용성 그룹Always On availability groups에 대한 서버 인스턴스를 구성하는 것과 관련된 일반적인 문제를 해결하는 데 유용한 정보를 제공합니다.This topic provides information to help you troubleshoot typical problems with configuring server instances for Always On 가용성 그룹Always On availability groups. Always On 가용성 그룹Always On availability groups 을 사용할 수 없거나, 계정이 잘못 구성되거나, 데이터베이스 미러링 끝점이 없거나, 끝점에 액세스할 수 없거나(SQL Server 오류 1418), 네트워크 액세스 권한이 없거나, 데이터베이스 조인 명령이 실패(SQL Server 오류 35250)하는 경우가 일반적인 구성 문제에 해당합니다.Typical configuration problems include Always On 가용성 그룹Always On availability groups is disabled, accounts are incorrectly configured, the database mirroring endpoint does not exist, the endpoint is inaccessible (SQL Server Error 1418), network access does not exist, and a join database command fails (SQL Server Error 35250).

참고

Always On 가용성 그룹Always On availability groups 사전 요구 사항을 충족하는지 확인합니다.Ensure that you are meeting the Always On 가용성 그룹Always On availability groups prerequisites. 자세한 내용은 Always On 가용성 그룹에 대한 필수 조건, 제한 사항 및 권장 사항(SQL Server)에 대한 서버 인스턴스를 구성하는 것과 관련된 일반적인 문제를 해결하는 데 유용한 정보를 제공합니다.For more information, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

항목 내용:In This Topic:

섹션Section 설명Description
Always On 가용성 그룹을 사용할 수 없음Always On Availability Groups Is Not Enabled SQL ServerSQL Server 에서 Always On 가용성 그룹Always On availability groups의 인스턴스를 사용할 수 없는 경우 해당 인스턴스는 가용성 그룹 만들기를 지원하지 않고 가용성 복제본을 호스팅할 수 없습니다.If an instance of SQL ServerSQL Server is not enabled for Always On 가용성 그룹Always On availability groups, the instance does not support availability group creation and cannot host any availability replicas.
계정Accounts SQL ServerSQL Server 가 실행되고 있는 계정을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다.Discusses requirements for correctly configuring the accounts under which SQL ServerSQL Server is running.
끝점Endpoints 서버 인스턴스의 데이터베이스 미러링 끝점 관련 문제를 진단하는 방법에 대해 설명합니다.Discusses how to diagnose issues with the database mirroring endpoint of a server instance.
시스템 이름System name 끝점 URL에서 서버 인스턴스의 시스템 이름을 지정하는 대안이 요약되어 있습니다.Summarizes the alternatives for specifying the system name of a server instance in an endpoint URL.
네트워크 액세스Network access 가용성 복제본을 호스팅하는 각 서버 인스턴스에서 TCP를 통해 다른 각 서버 인스턴스의 포트에 액세스할 수 있어야 한다는 요구 사항에 대해 설명합니다.Documents the requirement that each server instance that is hosting an availability replica must be able to access the port of each of the other server instances over TCP.
끝점 액세스(SQL Server 오류 1418)Endpoint Access (SQL Server Error 1418) SQL ServerSQL Server 오류 메시지에 대한 정보를 포함합니다.Contains information about this SQL ServerSQL Server error message.
데이터베이스 조인 실패(SQL Server 오류 35250)Join Database Fails (SQL Server Error 35250) 주 복제본 연결이 활성화되지 않아서 가용성 그룹에 대한 보조 데이터베이스 조인에 실패하는 원인과 해결 방법에 대해 설명합니다.Discusses the possible causes and resolution of a failure to join secondary databases to an availability group because the connection to the primary replica is not active.
읽기 전용 라우팅이 올바르게 작동하지 않음Read-Only Routing is Not Working Correctly
관련 태스크Related Tasks 가용성 그룹 구성 문제를 해결하는 방법에 대해 설명하는 SQL Server 2017SQL Server 2017 온라인 설명서에 있는 태스크 지향 항목 목록을 포함합니다.Contains a list of task-oriented topics in SQL Server 2017SQL Server 2017 Books Online that are particularly relevant to troubleshooting an availability group configuration.
관련 내용Related Content SQL ServerSQL Server 온라인 설명서에 포함되어 있지 않은 관련 리소스 목록을 포함합니다.Contains a list of relevant resources that are external to SQL ServerSQL Server Books Online.

Always On 가용성 그룹을 사용할 수 없음Always On Availability Groups Is Not Enabled

Always On 가용성 그룹Always On availability groups 의 각 인스턴스에서 SQL Server 2017SQL Server 2017기능을 사용하도록 설정해야 합니다.The Always On 가용성 그룹Always On availability groups feature must be enabled on each of the instances of SQL Server 2017SQL Server 2017. 자세한 내용은 Always On 가용성 그룹 활성화 및 비활성화(SQL Server)를 참조하세요.For more information, see Enable and Disable Always On Availability Groups (SQL Server).

계정Accounts

SQL ServerSQL Server 를 실행하고 있는 계정이 올바르게 구성되어 있어야 합니다.The accounts under which SQL ServerSQL Server is running must be correctly configured.

  1. 계정에 올바른 권한이 있어야 합니다.Do the accounts have the correct permissions?

    1. 파트너가 동일한 도메인 사용자 계정으로 실행되는 경우 올바른 사용자 로그인이 자동으로 두 master 데이터베이스에 모두 포함됩니다.If the partners run as the same domain user account, the correct user logins exist automatically in both master databases. 데이터베이스에 대한 간단한 보안 구성으로 권장됩니다.This simplifies the security configuration the database and is recommended.

    2. 두 서버 인스턴스가 서로 다른 계정으로 실행되는 경우, 원격 서버 인스턴스의 master 에 각 계정에 대한 로그인을 만들고 이 로그인에 해당 서버 인스턴스의 데이터베이스 미러링 끝점에 연결할 수 있는 CONNECT 권한을 부여해야 합니다.If two server instances run as different accounts, the login each account must be created in master on the remote server instance, and that login must be granted CONNECT permissions to connect to the database mirroring endpoint of that server instance. 자세한 내용은 데이터베이스 미러링 또는 Always On 가용성 그룹에 대한 로그인 계정 설정(SQL Server)을 참조하세요.For more information, seeSet Up Login Accounts for Database Mirroring or Always On Availability Groups (SQL Server).

  2. SQL ServerSQL Server가 로컬 시스템, 로컬 서비스 또는 네트워크 서비스와 같은 기본 제공 계정이나 비도메인 계정으로 실행 중인 경우에는 사용자가 끝점 인증을 위한 인증서를 사용해야 합니다.If SQL ServerSQL Server is running as a built-in account, such as Local System, Local Service, or Network Service, or a nondomain account, you must use certificates for endpoint authentication. 서비스 계정에서 동일한 도메인의 도메인 계정을 사용 중인 경우 모든 복제본 위치의 각 서비스 계정에 연결 권한을 부여하거나, 인증서를 사용할 수 있습니다.If your service accounts are using domain accounts in the same domain, you can choose to grant CONNECT access for each service account on all the replica locations or you can use certificates. 자세한 내용은 데이터베이스 미러링 끝점에 대한 인증서 사용(Transact-SQL)을 참조하세요.For more information, seeUse Certificates for a Database Mirroring Endpoint (Transact-SQL).

끝점Endpoints

끝점을 올바르게 구성해야 합니다.Endpoints must be correctly configured.

  1. 가용성 복제본을 호스트할 SQL ServerSQL Server 의 각 인스턴스(각 복제본 위치)에 데이터베이스 미러링 끝점이 있는지 확인합니다.Make sure that each instance of SQL ServerSQL Server that is going to host an availability replica (each replica location) has a database mirroring endpoint. 지정된 서버 인스턴스에 데이터베이스 미러링 끝점이 있는지 여부를 확인하려면 sys.database_mirroring_endpoints 카탈로그 뷰를 사용합니다.To determine whether a database mirroring endpoint exists on a given server instance, use the sys.database_mirroring_endpoints catalog view. 자세한 내용은 Windows 인증에 대한 데이터베이스 미러링 끝점 만들기(Transact-SQL) 또는 데이터베이스 미러링 끝점의 아웃바운드 연결에 대한 인증서 사용 허용(Transact-SQL)을 참조하세요.For more information, see either Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL) or Allow a Database Mirroring Endpoint to Use Certificates for Outbound Connections (Transact-SQL).

  2. 포트 번호가 정확한지 확인합니다.Check that the port numbers are correct.

    서버 인스턴스의 데이터베이스 미러링 끝점과 현재 연결된 포트를 식별하려면 다음 Transact-SQLTransact-SQL 문을 사용합니다.To identify the port currently associated with database mirroring endpoint of a server instance, use the following Transact-SQLTransact-SQL statement:

    SELECT type_desc, port FROM sys.tcp_endpoints;  
    GO  
    
  3. 설명하기 어려운 Always On 가용성 그룹Always On availability groups 설치 문제의 경우 각 서버 인스턴스를 조사하여 올바른 포트에서 수신하고 있는지 확인하는 것이 좋습니다.For Always On 가용성 그룹Always On availability groups setup issues that are difficult to explain, we recommend that you inspect each server instance to determine whether it is listening on the correct ports.

  4. 끝점이 시작되었는지 확인합니다(STATE=STARTED).Make sure that the endpoints are started (STATE=STARTED). 각 서버 인스턴스에서 다음 Transact-SQLTransact-SQL 문을 사용합니다.On each server instance, use the following Transact-SQLTransact-SQL statement:

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    state_desc 열에 대한 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.For more information about the state_desc column, see sys.database_mirroring_endpoints (Transact-SQL).

    끝점을 시작하려면 다음 Transact-SQLTransact-SQL 문을 사용합니다.To start an endpoint, use the following Transact-SQLTransact-SQL statement:

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

    자세한 내용은 ALTER ENDPOINT(Transact-SQL)를 참조하세요.For more information, see ALTER ENDPOINT (Transact-SQL).

  5. 다른 서버에서 로그인할 경우 CONNECT 권한이 있는지 확인합니다.Make sure that the login from the other server has CONNECT permission. 끝점에 대한 CONNECT 권한이 있는 사용자를 파악하려면 각 서버 인스턴스에서 다음 Transact-SQLTransact-SQL 문을 사용합니다.To determine who has CONNECT permission for an endpoint, on each server instance use the following Transact-SQLTransact-SQL statement:

    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  
    

System NameSystem Name

끝점 URL에서 서버 인스턴스의 시스템 이름에는 시스템을 명확하게 식별하는 모든 이름을 사용할 수 있습니다.For the system name of a server instance in an endpoint URL, you can use any name that unambiguously identifies the system. 서버 주소는 시스템 이름(시스템이 같은 도메인에 있는 경우), 정규화된 도메인 이름 또는 IP 주소(가급적 고정 IP 주소)일 수 있습니다.The server address can be a system name (if the systems are in the same domain), a fully qualified domain name, or an IP address (preferably, a static IP address). 정규화된 도메인 이름을 사용하는 것이 좋습니다.Using the fully qualified domain name is guaranteed to work. 자세한 내용은 가용성 복제본 추가 또는 수정 시 끝점 URL 지정(SQL Server)에 대한 서버 인스턴스를 구성하는 것과 관련된 일반적인 문제를 해결하는 데 유용한 정보를 제공합니다.For more information, see Specify the Endpoint URL When Adding or Modifying an Availability Replica (SQL Server).

Network AccessNetwork Access

가용성 복제본을 호스팅하는 각 서버 인스턴스에서 TCP를 통해 다른 각 서버 인스턴스의 포트에 액세스할 수 있어야 합니다.Each server instance that is hosting an availability replica must be able to access the port of each of the other server instance over TCP. 이는 서버 인스턴스가 서로 트러스트하지 않는 다른 도메인(트러스트되지 않은 도메인)에 있을 경우 특히 유용합니다.This is especially important if the server instances are in different domains that do not trust each other (untrusted domains).

끝점 액세스(SQL Server 오류 1418)Endpoint Access (SQL Server Error 1418)

SQL ServerSQL Server 메시지는 끝점 URL에 지정된 서버 네트워크 주소가 없거나 도달할 수 없음을 나타내며 네트워크 주소 이름을 확인한 후 명령을 다시 실행하도록 제안합니다.This SQL ServerSQL Server message indicates that the server network address specified in the endpoint URL cannot be reached or does not exist, and it suggests that you verify the network address name and reissue the command.

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

이 섹션에서는 주 복제본 연결이 활성화되지 않아서 가용성 그룹에 대한 보조 데이터베이스 조인에 실패하는 원인과 해결 방법에 대해 설명합니다.This section discusses the possible causes and resolution of a failure to join secondary databases to the availability group because the connection to the primary replica is not active.

해결 방법:Resolution:

  1. 방화벽 설정을 검사하여 주 복제본과 보조 복제본(기본적으로 포트 5022)을 호스팅하는 서버 인스턴스 사이의 끝점 포트 통신을 허용하는지 여부를 확인합니다.Check the firewall setting to see if whether allows the endpoint port communication between the server instances that host primary replica and the secondary replica (port 5022 by default).

  2. 네트워크 서비스 계정에 끝점에 대한 연결 권한이 있는지 여부를 확인합니다.Check whether the network service account has connect permission to the endpoint.

읽기 전용 라우팅이 올바르게 작동하지 않음Read-Only Routing is Not Working Correctly

다음 구성 값 설정을 확인하고 필요한 경우 수정합니다.Verify the following configuration values settings and correct them if necessary.

위치…On… 동작Action 설명Comments 링크Link
확인란Checkbox 현재 주 복제본Current primary replica 가용성 그룹 수신기가 온라인 상태인지 확인합니다.Ensure that the availability group listener is online. 수신기가 온라인 상태인지 여부를 확인하려면:To verify whether the listener is online:

SELECT * FROM sys.dm_tcp_listener_states;

오프라인 수신기를 다시 시작하려면:To restart an offline listener:

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

ALTER AVAILABILITY GROUP(Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
확인란Checkbox 현재 주 복제본Current primary replica READ_ONLY_ROUTING_LIST에 읽기 가능한 보조 복제본을 호스팅하는 서버 인스턴스만 포함되어 있는지 확인합니다.Ensure that the READ_ONLY_ROUTING_LIST contains only server instances that are hosting a readable secondary replica. 읽기 가능한 보조 복제본을 확인하려면: sys.availability_replicas(secondary_role_allow_connections_desc 열)To identify readable secondary replicas: sys.availability_replicas (secondary_role_allow_connections_desc column)

읽기 전용 라우팅 목록을 보려면: sys.availability_read_only_routing_listsTo view a read-only routing list: sys.availability_read_only_routing_lists

읽기 전용 라우팅 목록을 변경하려면: ALTER AVAILABILITY GROUPTo change a read-only routing list: ALTER AVAILABILITY GROUP
sys.availability_replicas(Transact-SQL)sys.availability_replicas (Transact-SQL)

sys.availability_read_only_routing_lists(Transact-SQL)sys.availability_read_only_routing_lists (Transact-SQL)

ALTER AVAILABILITY GROUP(Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
확인란Checkbox read_only_routing_list에 있는 모든 복제본Every replica in the read_only_routing_list Windows 방화벽이 READ_ONLY_ROUTING_URL 포트를 차단하고 있는지 확인합니다.Ensure that the Windows firewall is not blocking the READ_ONLY_ROUTING_URL port. 데이터베이스 엔진 액세스에 대한 Windows 방화벽 구성Configure a Windows Firewall for Database Engine Access
확인란Checkbox read_only_routing_list에 있는 모든 복제본Every replica in the read_only_routing_list SQL ServerSQL Server 구성 관리자에서 다음을 확인합니다.In SQL ServerSQL Server Configuration Manager, verify that:

SQL Server 원격 연결이 사용되고 있는지 여부SQL Server remote connectivity is enabled.

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

IP 주소가 올바르게 구성되어 있는지 여부The IP addresses are configured correctly.
서버 속성 보기 또는 변경(SQL Server)View or Change Server Properties (SQL Server)

특정 TCP 포트로 수신하도록 서버 구성(SQL Server 구성 관리자)Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)
확인란Checkbox read_only_routing_list에 있는 모든 복제본Every replica in the read_only_routing_list READ_ONLY_ROUTING_URL(TCP://system-address:port)에 올바른 FQDN(정규화된 도메인 이름) 및 포트 번호가 포함되어 있는지 확인합니다.Ensure that the READ_ONLY_ROUTING_URL (TCP://system-address:port) contains the correct fully-qualified domain name (FQDN) and port number. Always On에 대한 read_only_routing_url 계산Calculating read_only_routing_url for Always On

sys.availability_replicas(Transact-SQL)sys.availability_replicas (Transact-SQL)

ALTER AVAILABILITY GROUP(Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
확인란Checkbox 클라이언트 시스템Client system 클라이언트 드라이버가 읽기 전용 라우팅을 지원하는지 확인합니다.Verify that the client driver supports read-only routing. Always On 클라이언트 연결(SQL Server)Always On Client Connectivity (SQL Server)

관련 태스크Related Tasks

관련 내용Related Content

참고 항목See Also

데이터베이스 미러링 및 Always On 가용성 그룹에 대한 전송 보안(SQL Server) Transport Security for Database Mirroring and Always On Availability Groups (SQL Server)
클라이언트 네트워크 구성 Client Network Configuration
Always On 가용성 그룹에 대한 필수 조건, 제한 사항 및 권장 사항(SQL Server)Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)