가용성 그룹 만들기(Transact-SQL)Create an Availability Group (Transact-SQL)

이 항목에서는 Transact-SQLTransact-SQL 기능이 설정된 SQL Server 2017SQL Server 2017 인스턴스에서 Always On 가용성 그룹Always On availability groups 을 사용하여 가용성 그룹을 만들고 구성하는 방법을 설명합니다.This topic describes how to use Transact-SQLTransact-SQL to create and configure an availability group on instances of SQL Server 2017SQL Server 2017 on which the Always On 가용성 그룹Always On availability groups feature is enabled. 가용성 그룹 은 단일 단위로 장애 조치(Failover)될 사용자 데이터베이스 집합과 장애 조치(Failover)를 지원하는 장애 조치(Failover) 파트너 집합( 가용성 복제본이라고 함)을 정의합니다.An availability group defines a set of user databases that will fail over as a single unit and a set of failover partners, known as availability replicas, that support failover.

참고

가용성 그룹에 대한 개요를 보려면 Always On 가용성 그룹 개요(SQL Server)인스턴스에 AlwaysOn 가용성 그룹을 만드는 방법을 설명합니다.For an introduction to availability groups, see Overview of Always On Availability Groups (SQL Server).

참고

Transact-SQLTransact-SQL을 사용하는 대신 가용성 그룹 만들기 마법사나 SQL ServerSQL Server PowerShell cmdlet을 사용할 수도 있습니다.As an alternative to using Transact-SQLTransact-SQL, you can use the Create Availability Group wizard or SQL ServerSQL Server PowerShell cmdlets. 자세한 내용은 가용성 그룹 마법사 사용(SQL Server Management Studio), 새 가용성 그룹 대화 상자 사용(SQL Server Management Studio)또는 가용성 그룹 만들기(SQL Server PowerShell)를 참조하세요.For more information, see Use the Availability Group Wizard (SQL Server Management Studio), Use the New Availability Group Dialog Box (SQL Server Management Studio), or Create an Availability Group (SQL Server PowerShell).

시작하기 전에 Before You Begin

가용성 그룹을 처음 만들어 보는 경우 이 섹션을 먼저 읽는 것이 좋습니다.We strongly recommend that you read this section before attempting to create your first availability group.

필수 구성 요소, 제한 사항 및 권장 사항 Prerequisites, Restrictions, and Recommendations

  • 가용성 그룹을 만들기 전에 가용성 복제본을 호스팅하는 SQL ServerSQL Server 인스턴스가 동일한 WSFC 장애 조치(Failover) 클러스터 내의 다른 WSFC(Windows Server 장애 조치(Failover) 클러스터링) 노드에 있는지 확인합니다.Before creating an availability group, verify that the instances of SQL ServerSQL Server that host availability replicas reside on different Windows Server Failover Clustering (WSFC) node within the same WSFC failover cluster. 또한 각 서버 인스턴스가 Always On 가용성 그룹Always On availability groups 의 기타 모든 필수 구성 요소를 충족하는지도 확인합니다.Also, verify that each of the server instance meets all other Always On 가용성 그룹Always On availability groups prerequisites. 자세한 내용은 Always On 가용성 그룹에 대한 필수 조건, 제한 사항 및 권장 사항(SQL Server)를 참조하세요.For more information, we strongly recommend that you read Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

보안 Security

사용 권한 Permissions

CREATE AVAILABILITY GROUP 서버 권한, ALTER ANY AVAILABILITY GROUP 권한, CONTROL SERVER 권한 중 하나와 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

태스크 및 해당 Transact-SQL 문 요약 Summary of Tasks and Corresponding Transact-SQL Statements

다음 표에서는 가용성 그룹을 만들고 구성하는 데 필요한 기본 태스크와 이러한 태스크에 사용할 Transact-SQLTransact-SQL 문을 보여 줍니다.The following table lists the basic tasks involved in creating and configuring an availability group and indicates which Transact-SQLTransact-SQL statements to use for these tasks. Always On 가용성 그룹Always On availability groups 태스크는 표에 나오는 순서대로 수행해야 합니다.The Always On 가용성 그룹Always On availability groups tasks must be performed in the sequence in which they are presented in the table.

태스크Task Transact-SQL 문Transact-SQL Statement(s) 태스크를 수행할 위치\Where to Perform Task****
SQL ServerSQL Server 인스턴스당 하나의 데이터베이스 미러링 끝점 만들기Create database mirroring endpoint (once per SQL ServerSQL Server instance) CREATE ENDPOINT endpointNameCREATE ENDPOINT endpointName FOR DATABASE_MIRRORINGFOR DATABASE_MIRRORING 데이터베이스 미러링 끝점이 없는 각 서버 인스턴스에서 실행합니다.Execute on each server instance that lacks database mirroring endpoint.
가용성 그룹 만들기Create availability group CREATE AVAILABILITY GROUPCREATE AVAILABILITY GROUP 초기 주 복제본을 호스트할 서버 인스턴스에서 실행합니다.Execute on the server instance that is to host the initial primary replica.
가용성 그룹에 보조 복제본 조인Join secondary replica to availability group ALTER AVAILABILITY GROUP group_name JOINALTER AVAILABILITY GROUP group_name JOIN 보조 복제본을 호스트하는 각 서버 인스턴스에서 실행합니다.Execute on each server instance that hosts a secondary replica.
보조 데이터베이스 준비Prepare the secondary database BACKUPRESTORE.BACKUP and RESTORE. 주 복제본을 호스트하는 서버 인스턴스에 백업을 만듭니다.Create backups on the server instance that hosts the primary replica.

RESTORE WITH NORECOVERY를 사용하여 보조 복제본을 호스팅하는 각 서버 인스턴스에 백업을 복원합니다.Restore backups on each server instance that hosts a secondary replica, using RESTORE WITH NORECOVERY.
가용성 그룹에 각 보조 데이터베이스를 조인하여 데이터 동기화 시작Start data synchronization by joining each secondary database to availability group ALTER DATABASE database_name SET HADR AVAILABILITY GROUP = group_nameALTER DATABASE database_name SET HADR AVAILABILITY GROUP = group_name 보조 복제본을 호스트하는 각 서버 인스턴스에서 실행합니다.Execute on each server instance that hosts a secondary replica.

지정된 태스크를 수행하려면 표시된 서버 인스턴스에 연결합니다.To perform a given task, connect to the indicated server instance or instances.

Transact-SQL을 사용하여 가용성 그룹 만들기 및 구성 Using Transact-SQL to Create and Configure an Availability Group

참고

이러한 각 Transact-SQLTransact-SQL 문의 코드 예가 포함된 샘플 구성 프로시저는 예: Windows 인증을 사용하는 가용성 그룹 구성을 참조하세요.For a sample configuration procedure containing code examples of each these Transact-SQLTransact-SQL statements, see Example: Configuring an Availability Group that Uses Windows Authentication.

  1. 주 복제본을 호스팅할 서버 인스턴스에 연결합니다.Connect to the server instance that is to host the primary replica.

  2. CREATE AVAILABILITY GROUP Transact-SQLTransact-SQL 문을 사용하여 가용성 그룹을 만듭니다.Create the availability group by using the CREATE AVAILABILITY GROUP Transact-SQLTransact-SQL statement.

  3. 새 보조 복제본을 가용성 그룹에 조인합니다.Join the new secondary replica to the availability group. 자세한 내용은 가용성 그룹에 보조 복제본 조인(SQL Server)에서 PowerShell cmdlet을 사용하여 Always On 가용성 그룹을 만들고 구성하는 방법에 대해 설명합니다.For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

  4. 가용성 그룹의 각 데이터베이스에 대해 RESTORE WITH NORECOVERY를 사용하여 주 데이터베이스의 최신 백업을 복원하는 방법으로 보조 데이터베이스를 만듭니다.For each database in the availability group, create a secondary database by restoring recent backups of the primary database, using RESTORE WITH NORECOVERY. 자세한 내용은 예: Windows 인증을 사용하여 가용성 그룹 설정(Transact-SQL)에서 데이터베이스 백업을 복원하는 단계부터 참조하세요.For more information, see Example: Setting Up an Availability Group Using Windows Authentication (Transact-SQL), starting with the step that restores the database backup.

  5. 모든 새 보조 데이터베이스를 가용성 그룹에 조인합니다.Join every new secondary database to the availability group. 자세한 내용은 가용성 그룹에 보조 복제본 조인(SQL Server)를 참조하세요.For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

예: Windows 인증을 사용하는 가용성 그룹 구성 Example: Configuring an Availability Group that Uses Windows Authentication

이 예에서 만드는 예제 Always On 가용성 그룹Always On availability groups 구성 프로시저는 Transact-SQLTransact-SQL 을 사용하여 Windows 인증을 사용하는 데이터베이스 미러링 끝점을 설정하고, 가용성 그룹과 해당 보조 데이터베이스를 만들고 구성합니다.This example creates a sample Always On 가용성 그룹Always On availability groups configuration procedure that uses Transact-SQLTransact-SQL to set up database mirroring endpoints that use Windows Authentication and to create and configure an availability group and its secondary databases.

이 예에는 다음과 같은 섹션이 포함되어 있습니다.This example contains the following sections:

예제 구성 프로시저를 사용하기 위한 사전 요구 사항 Prerequisites for Using the Sample Configuration Procedure

이 예제 프로시저에 대한 요구 사항은 다음과 같습니다.This sample procedure has the following requirements:

  • 서버 인스턴스에서는 Always On 가용성 그룹Always On availability groups을 지원해야 합니다.The server instances must support Always On 가용성 그룹Always On availability groups. 자세한 내용은 Always On 가용성 그룹에 대한 필수 조건, 제한 사항 및 권장 사항(SQL Server)를 참조하세요.For more information, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

  • 두 예제 데이터베이스 MyDb1MyDb2는 주 복제본을 호스팅할 서버 인스턴스에 있어야 합니다.Two sample databases, MyDb1 and MyDb2, must exist on the server instance that will host the primary replica. 다음 코드 예에서는 이러한 두 데이터베이스를 만들고 구성하며 각 데이터베이스의 전체 백업을 만듭니다.The following code examples create and configure these two databases and create a full backup of each. 예제 가용성 그룹을 만들려는 서버 인스턴스에서 이러한 코드 예를 실행합니다.Execute these code examples on the server instance on which you intend to create the sample availability group. 이 서버 인스턴스는 예제 가용성 그룹의 초기 주 복제본을 호스팅합니다.This server instance will host the initial primary replica of the sample availability group.

    1. 다음 Transact-SQLTransact-SQL 예에서는 이러한 데이터베이스를 만든 다음 전체 복구 모델을 사용하도록 데이터베이스를 변경합니다.The following Transact-SQLTransact-SQL example creates these databases and alters them to use the full recovery model:

      -- Create sample databases:  
      CREATE DATABASE MyDb1;  
      GO  
      ALTER DATABASE MyDb1 SET RECOVERY FULL;  
      GO  
      
      CREATE DATABASE MyDb2;  
      GO  
      ALTER DATABASE MyDb2 SET RECOVERY FULL;  
      GO  
      
    2. 다음 코드 예제에서는 MyDb1MyDb2의 전체 데이터베이스 백업을 만듭니다.The following code example creates a full database backup of MyDb1 and MyDb2. 이 코드 샘플에서는 가상의 백업 공유 \\FILESERVER\SQLbackups를 사용합니다.This code example uses a fictional backup share, \\FILESERVER\SQLbackups.

      -- Backup sample databases:  
      BACKUP DATABASE MyDb1   
      TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
          WITH FORMAT  
      GO  
      
      BACKUP DATABASE MyDb2   
      TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
          WITH FORMAT  
      GO  
      

    [TopOfExample][TopOfExample]

예제 구성 프로시저 Sample Configuration Procedure

이 예제 구성에서는 서비스 계정이 다르지만 트러스트된 도메인 계정(DOMAIN1DOMAIN2)으로 실행되는 두 개의 독립 실행형 서버 인스턴스에 가용성 복제본이 만들어집니다.In this sample configuration, the availability replica will be created on two stand-alone server instances whose service accounts run under different, but trusted, domains (DOMAIN1 and DOMAIN2).

다음 표에는 이 예제 구성에 사용된 값이 요약되어 있습니다.The following table summarizes the values used in this sample configuration.

초기 역할Initial role 시스템System 호스트 SQL ServerSQL Server 인스턴스Host SQL ServerSQL Server Instance
Primary COMPUTER01 AgHostInstance
보조Secondary COMPUTER02 기본 인스턴스입니다.Default instance.
  1. 가용성 그룹을 만들 서버 인스턴스( 에 있는 라는 인스턴스)에 AgHostInstance dbm_endpoint COMPUTER01라는 데이터베이스 미러링 끝점을 만듭니다.Create a database mirroring endpoint named dbm_endpoint on the server instance on which you plan to create the availability group (this is an instance named AgHostInstance on COMPUTER01). 이 끝점은 포트 7022를 사용합니다.This endpoint uses port 7022. 가용성 그룹을 만드는 서버 인스턴스는 주 복제본을 호스팅합니다.Note that the server instance on which you create the availability group will host the primary replica.

    -- Create endpoint on server instance that hosts the primary replica:  
    CREATE ENDPOINT dbm_endpoint  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    
  2. 보조 복제본을 호스트할 서버 인스턴스( 에 있는 기본 서버 인스턴스)에 dbm_endpoint COMPUTER02라는 끝점을 만듭니다.Create an endpoint dbm_endpoint on the server instance that will host the secondary replica (this is the default server instance on COMPUTER02). 이 끝점은 포트 5022를 사용합니다.This endpoint uses port 5022.

    -- Create endpoint on server instance that hosts the secondary replica:   
    CREATE ENDPOINT dbm_endpoint  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=5022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    
  3. 참고

    가용성 복제본을 호스팅할 서버 인스턴스의 서비스 계정이 동일한 도메인 계정으로 실행되는 경우에는 이 단계가 필요하지 않습니다.If the service accounts of the server instances that are to host your availability replicas run under the same domain account this step is unnecessary. 이 단계를 생략하고 다음 단계로 직접 이동합니다.Skip it and go directly to the next step.

    서버 인스턴스의 서비스 계정이 다른 도메인 사용자로 실행되는 경우에는 각 서버 인스턴스에서 다른 서버 인스턴스에 대한 로그인을 만들고 로컬 데이터베이스 미러링 끝점에 액세스할 수 있는 권한을 이 로그인에 부여합니다.If the service accounts of the server instances run under different domain users, on each server instance, create a login for the other server instance and grant this login permission to access the local database mirroring endpoint.

    다음 코드 예에서는 로그인을 만들고 이 로그인에 끝점에 대한 사용 권한을 부여하기 위한 Transact-SQLTransact-SQL 문을 보여 줍니다.The following code example shows the Transact-SQLTransact-SQL statements for creating a login and granting it permission on an endpoint. 여기에서 원격 서버 인스턴스의 도메인 계정은 domain_name\user_name으로 표시됩니다.The domain account of the remote server instance is represented here as domain_name\user_name.

    -- If necessary, create a login for the service account, domain_name\user_name  
    -- of the server instance that will host the other replica:  
    USE master;  
    GO  
    CREATE LOGIN [domain_name\user_name] FROM WINDOWS;  
    GO  
    -- And Grant this login connect permissions on the endpoint:  
    GRANT CONNECT ON ENDPOINT::dbm_endpoint   
       TO [domain_name\user_name];  
    GO  
    
  4. 사용자 데이터베이스가 있는 서버 인스턴스에서 가용성 그룹을 만듭니다.On the server instance where the user databases reside, create the availability group.

    다음 코드 예제에서는 MyDb1MyDb2 라는 샘플 데이터베이스가 만들어진 서버 인스턴스에 MyAG라는 가용성 그룹을 만듭니다.The following code example creates an availability group named MyAG on the server instance on which the sample databases, MyDb1 and MyDb2, were created. AgHostInstanceCOMPUTER01 에 있는 로컬 서버 인스턴스 가 먼저 지정됩니다.The local server instance, AgHostInstance, on COMPUTER01 is specified first. 이 인스턴스는 초기 주 복제본을 호스팅합니다.This instance will host the initial primary replica. COMPUTER02에 기본 서버 인스턴스인 원격 서버 인스턴스가 보조 복제본을 호스트하도록 지정됩니다.A remote server instance, the default server instance on COMPUTER02, is specified to host a secondary replica. 두 가용성 복제본 모두 수동 장애 조치와 함께 비동기 커밋 모드를 사용하도록 구성됩니다. 비동기 커밋 복제본에 대한 수동 장애 조치는 데이터 손실이 가능한 강제 장애 조치를 의미합니다.Both availability replica are configured to use asynchronous-commit mode with manual failover (for asynchronous-commit replicas manual failover means forced failover with possible data loss).

    
              -- Create the availability group, MyAG:   
    CREATE AVAILABILITY GROUP MyAG   
       FOR   
          DATABASE MyDB1, MyDB2   
       REPLICA ON   
          'COMPUTER01\AgHostInstance' WITH   
             (  
             ENDPOINT_URL = 'TCP://COMPUTER01.Adventure-Works.com:7022',   
             AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,  
             FAILOVER_MODE = MANUAL  
             ),  
          'COMPUTER02' WITH   
             (  
             ENDPOINT_URL = 'TCP://COMPUTER02.Adventure-Works.com:5022',  
             AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,  
             FAILOVER_MODE = MANUAL  
             );   
    GO  
    

    가용성 그룹을 만드는 다른 Transact-SQLTransact-SQL 코드 샘플을 보려면 CREATE AVAILABILITY GROUP(Transact-SQL)을 참조하세요.For additional Transact-SQLTransact-SQL code examples of creating an availability group, see CREATE AVAILABILITY GROUP (Transact-SQL).

  5. 보조 복제본을 호스팅하는 서버 인스턴스에서 보조 복제본을 가용성 그룹에 조인합니다.On the server instance that hosts the secondary replica, join the secondary replica to the availability group.

    다음 코드 예에서는 COMPUTER02 의 보조 복제본을 MyAG 가용성 그룹에 조인합니다.The following code example joins the secondary replica on COMPUTER02 to the MyAG availability group.

    -- On the server instance that hosts the secondary replica,   
    -- join the secondary replica to the availability group:  
    ALTER AVAILABILITY GROUP MyAG JOIN;  
    GO  
    
  6. 보조 복제본을 호스팅하는 서버 인스턴스에서 보조 데이터베이스를 만듭니다.On the server instance that hosts the secondary replica, create the secondary databases.

    다음 코드 예제에서는 RESTORE WITH NORECOVERY를 사용하여 데이터베이스 백업을 복원하는 방법으로 MyDb1MyDb2 보조 데이터베이스를 만듭니다.The following code example creates the MyDb1 and MyDb2 secondary databases by restoring database backups using RESTORE WITH NORECOVERY.

    -- On the server instance that hosts the secondary replica,   
    -- Restore database backups using the WITH NORECOVERY option:  
    RESTORE DATABASE MyDb1   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
        WITH NORECOVERY  
    GO  
    
    RESTORE DATABASE MyDb2   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
        WITH NORECOVERY  
    GO  
    
  7. 주 복제본을 호스팅하는 서버 인스턴스에서 각 주 데이터베이스의 트랜잭션 로그를 백업합니다.On the server instance that hosts the primary replica, back up the transaction log on each of the primary databases.

    중요

    실제 가용성 그룹을 구성할 때는 해당 보조 데이터베이스를 가용성 그룹에 조인한 후에 주 데이터베이스에 대한 로그 백업 태스크를 수행하는 것이 좋습니다.When you are configuring a real availability group, we recommend that, before taking this log backup, you suspend log backup tasks for your primary databases until you have joined the corresponding secondary databases to the availability group.

    다음 코드 예에서는 MyDb1 및 MyDb2에 트랜잭션 로그 백업을 만듭니다.The following code example creates a transaction log backup on MyDb1 and on MyDb2.

    -- On the server instance that hosts the primary replica,   
    -- Backup the transaction log on each primary database:  
    BACKUP LOG MyDb1   
    TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
        WITH NOFORMAT  
    GO  
    
    BACKUP LOG MyDb2   
    TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
        WITHNOFORMAT  
    GO  
    

    일반적으로 로그 백업은 각 주 데이터베이스에서 만든 다음 WITH NORECOVERY를 사용하여 해당하는 보조 데이터베이스에 복원해야 합니다.Typically, a log backup must be taken on each primary database and then restored on the corresponding secondary database (using WITH NORECOVERY). 그러나 데이터베이스를 방금 만들었으며 아직 로그 백업을 만들지 않았거나 복구 모델이 방금 SIMPLE에서 FULL로 변경된 경우에는 이 로그 백업이 필요하지 않을 수도 있습니다.However, this log backup might be unnecessary if the database has just been created and no log backup has been taken yet or the recovery model has just been changed from SIMPLE to FULL.

  8. 보조 복제본을 호스팅하는 서버 인스턴스에서 보조 데이터베이스에 로그 백업을 적용합니다.On the server instance that hosts the secondary replica, apply log backups to the secondary databases.

    다음 코드 예제에서는 RESTORE WITH NORECOVERY를 사용하여 데이터베이스 백업을 복원하는 방법으로 MyDb1MyDb2 보조 데이터베이스에 백업을 적용합니다.The following code example applies backups to MyDb1 and MyDb2 secondary databases by restoring database backups using RESTORE WITH NORECOVERY.

    중요

    실제 보조 데이터베이스를 준비할 때는 처음부터 항상 RESTORE WITH NORECOVERY를 사용하여 보조 데이터베이스를 만들 때 사용한 데이터베이스 백업보다 나중에 만들어진 모든 로그 백업을 적용해야 합니다.When you are preparing a real secondary database, you need to apply every log backup taken since the database backup from which you created the secondary database, starting with the earliest and always using RESTORE WITH NORECOVERY. 물론, 전체 데이터베이스 백업과 차등 데이터베이스 백업을 모두 복원하는 경우에는 차등 백업 이후에 만들어진 로그 백업만 적용하면 됩니다.Of course, if you restore both full and differential database backups, you would only need to apply the log backups taken after the differential backup.

    -- Restore the transaction log on each secondary database,  
    -- using the WITH NORECOVERY option:  
    RESTORE LOG MyDb1   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    RESTORE LOG MyDb2   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  9. 보조 복제본을 호스팅하는 서버 인스턴스에서 새 보조 데이터베이스를 가용성 그룹에 조인합니다.On the server instance that hosts the secondary replica, join the new secondary databases to the availability group.

    다음 코드 예제에서는 MyDb1 보조 데이터베이스를 조인한 다음 MyDb2 보조 데이터베이스를 MyAG 가용성 그룹에 조인합니다.The following code example, joins the MyDb1 secondary database and then the MyDb2 secondary databases to the MyAG availability group.

    -- On the server instance that hosts the secondary replica,   
    -- join each secondary database to the availability group:  
    ALTER DATABASE MyDb1 SET HADR AVAILABILITY GROUP = MyAG;  
    GO  
    
    ALTER DATABASE MyDb2 SET HADR AVAILABILITY GROUP = MyAG;  
    GO  
    

예제 구성 프로시저에 대한 전체 코드 예 Complete Code Example for Sample Configuration Procedure

다음 예에서는 예제 구성 프로시저의 모든 단계에 포함된 코드 예를 병합합니다.The following example merges the code examples from all the steps of the sample configuration procedure. 다음 표에는 이 코드 예에 사용된 자리 표시자 값이 요약되어 있습니다.The following table summarized the placeholder values used in this code example. 이 코드 예의 단계에 대한 자세한 내용은 이 항목 윗부분의 예제 구성 프로시저를 사용하기 위한 사전 요구 사항예제 구성 프로시저를 참조하세요.For more information about the steps in this code example, see Prerequisites for Using the Sample Configuration Procedure and Sample Configuration Procedure, earlier in this topic.

자리 표시자Placeholder 설명Description
\\FILESERVER\SQLbackups\\FILESERVER\SQLbackups 가상의 백업 공유입니다.Fictional backup share.
\\FILESERVER\SQLbackups\MyDb1.bak\\FILESERVER\SQLbackups\MyDb1.bak MyDb1의 백업 파일입니다.Backup file for MyDb1.
\\FILESERVER\SQLbackups\MyDb2.bak\\FILESERVER\SQLbackups\MyDb2.bak MyDb2의 백업 파일입니다.Backup file for MyDb2.
70227022 각 데이터베이스 미러링 끝점에 할당된 포트 번호입니다.Port number assigned to each database mirroring endpoint.
COMPUTER01\AgHostInstanceCOMPUTER01\AgHostInstance 초기 주 복제본을 호스팅하는 서버 인스턴스입니다.Server instance that hosts the initial primary replica.
COMPUTER02COMPUTER02 초기 보조 복제본을 호스팅하는 서버 인스턴스입니다.Server instance that hosts the initial secondary replica. 이 인스턴스는 COMPUTER02의 기본 서버 인스턴스입니다.This is the default server instance on COMPUTER02.
에 있는dbm_endpoint 각 데이터베이스 미러링 끝점에 지정된 이름입니다.Name specified for each database mirroring endpoint.
MyDb1MyAG 예제 가용성 그룹의 이름입니다.Name of sample availability group.
MyDb1MyDb1 첫 번째 예제 데이터베이스의 이름입니다.Name of first sample database.
MyDb2MyDb2 두 번째 예제 데이터베이스의 이름입니다.Name of second sample database.
DOMAIN1\user1DOMAIN1\user1 초기 주 복제본을 호스팅할 서버 인스턴스의 서비스 계정입니다.Service account of the server instance that is to host the initial primary replica.
DOMAIN2\user2DOMAIN2\user2 초기 보조 복제본을 호스팅할 서버 인스턴스의 서비스 계정입니다.Service account of the server instance that is to host the initial secondary replica.
TCP://COMPUTER01.Adventure-Works.com:7022TCP://COMPUTER01.Adventure-Works.com:7022 COMPUTER01에 있는 SQL ServerSQL Server 의 AgHostInstance 인스턴스의 끝점 URL입니다.Endpoint URL of the AgHostInstance instance of SQL ServerSQL Server on COMPUTER01.
TCP://COMPUTER02.Adventure-Works.com:5022TCP://COMPUTER02.Adventure-Works.com:5022 COMPUTER02에 있는 SQL ServerSQL Server의 기본 인스턴스의 끝점 URL입니다.Endpoint URL of the default instance of SQL ServerSQL Server on COMPUTER02.

참고

가용성 그룹을 만드는 다른 Transact-SQLTransact-SQL 코드 샘플을 보려면 CREATE AVAILABILITY GROUP(Transact-SQL)을 참조하세요.For additional Transact-SQLTransact-SQL code examples of creating an availability group, see CREATE AVAILABILITY GROUP (Transact-SQL).

-- on the server instance that will host the primary replica,   
-- create sample databases:  
CREATE DATABASE MyDb1;  
GO  
ALTER DATABASE MyDb1 SET RECOVERY FULL;  
GO  

CREATE DATABASE MyDb2;  
GO  
ALTER DATABASE MyDb2 SET RECOVERY FULL;  
GO  

-- Backup sample databases:  
BACKUP DATABASE MyDb1   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH FORMAT  
GO  

BACKUP DATABASE MyDb2   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITH FORMAT  
GO  

-- Create the endpoint on the server instance that will host the primary replica:  
CREATE ENDPOINT dbm_endpoint  
    STATE=STARTED   
    AS TCP (LISTENER_PORT=7022)   
    FOR DATABASE_MIRRORING (ROLE=ALL)  
GO  

-- Create the endpoint on the server instance that will host the secondary replica:   
CREATE ENDPOINT dbm_endpoint  
    STATE=STARTED   
    AS TCP (LISTENER_PORT=7022)   
    FOR DATABASE_MIRRORING (ROLE=ALL)  
GO  

-- If both service accounts run under the same domain account, skip this step. Otherwise,   
-- On the server instance that will host the primary replica,   
-- create a login for the service account   
-- of the server instance that will host the secondary replica, DOMAIN2\user2,   
-- and grant this login connect permissions on the endpoint:  
USE master;  
GO  
CREATE LOGIN [DOMAIN2\user2] FROM WINDOWS;  
GO  
GRANT CONNECT ON ENDPOINT::dbm_endpoint   
   TO [DOMAIN2\user2];  
GO  

-- If both service accounts run under the same domain account, skip this step. Otherwise,   
-- On the server instance that will host the secondary replica,  
-- create a login for the service account   
-- of the server instance that will host the primary replica, DOMAIN1\user1,   
-- and grant this login connect permissions on the endpoint:  
USE master;  
GO  

CREATE LOGIN [DOMAIN1\user1] FROM WINDOWS;  
GO  
GRANT CONNECT ON ENDPOINT::dbm_endpoint   
   TO [DOMAIN1\user1];  
GO  

-- On the server instance that will host the primary replica,   
-- create the availability group, MyAG:  
CREATE AVAILABILITY GROUP MyAG   
   FOR   
      DATABASE MyDB1, MyDB2   
   REPLICA ON   
      'COMPUTER01\AgHostInstance' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER01.Adventure-Works.com:7022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = AUTOMATIC  
         ),  
      'COMPUTER02' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER02.Adventure-Works.com:7022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = AUTOMATIC  
         );   
GO  

-- On the server instance that hosts the secondary replica,   
-- join the secondary replica to the availability group:  
ALTER AVAILABILITY GROUP MyAG JOIN;  
GO  

-- Restore database backups onto this server instance, using RESTORE WITH NORECOVERY:  
RESTORE DATABASE MyDb1   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH NORECOVERY  
GO  

RESTORE DATABASE MyDb2   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITH NORECOVERY  
GO  

-- Back up the transaction log on each primary database:  
BACKUP LOG MyDb1   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH NOFORMAT  
GO  

BACKUP LOG MyDb2   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITHNOFORMAT  
GO  

-- Restore the transaction log on each secondary database,  
-- using the WITH NORECOVERY option:  
RESTORE LOG MyDb1   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH FILE=1, NORECOVERY  
GO  
RESTORE LOG MyDb2   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITH FILE=1, NORECOVERY  
GO  

-- On the server instance that hosts the secondary replica,   
-- join each secondary database to the availability group:  
ALTER DATABASE MyDb1 SET HADR AVAILABILITY GROUP = MyAG;  
GO  

ALTER DATABASE MyDb2 SET HADR AVAILABILITY GROUP = MyAG;  
GO  

가용성 그룹 및 복제본 속성을 구성하려면To configure availability group and replica properties

참고 항목See Also

데이터베이스 미러링 끝점(SQL Server) The Database Mirroring Endpoint (SQL Server)
Always On 가용성 그룹 개요(SQL Server) Overview of Always On Availability Groups (SQL Server)
가용성 그룹 수신기, 클라이언트 연결 및 응용 프로그램 장애 조치(failover)(SQL Server) Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server)
Always On 가용성 그룹에 대한 필수 조건, 제한 사항 및 권장 사항(SQL Server)Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)