Создание группы доступности Always On с помощью Transact-SQL (T-SQL)Create an Always On availability group using Transact-SQL (T-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В данном разделе описывается использование Transact-SQLTransact-SQL для создания и настройки группы доступности на основе экземпляров SQL Server 2017SQL Server 2017 , на которых включена функция Группы доступности AlwaysOnAlways 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 Группы доступности AlwaysOnAlways On availability groups feature is enabled. Группа доступности определяет набор пользовательских баз данных, которые будут действовать при сбое как единое целое, и набор партнеров по обеспечению отработки отказа, называемых репликами доступностии поддерживающих отработку отказа.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.

Примечание

Базовые сведения о группах доступности см. в разделе Обзор групп доступности AlwaysOn (SQL Server).For an introduction to availability groups, see Overview of Always On Availability Groups (SQL Server).

Примечание

Вместо Transact-SQLTransact-SQLможно использовать мастер создания групп доступности или командлеты SQL ServerSQL Server PowerShell.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).

Предварительные условия, ограничения и рекомендацииPrerequisites, Restrictions, and Recommendations

  • Перед созданием группы доступности необходимо, чтобы экземпляры SQL ServerSQL Server , на которых находятся реплики доступности, были расположены на различных узлах одной отказоустойчивой кластеризации Windows Server (WSFC).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. Кроме того, убедитесь, что каждый из экземпляров сервера соответствует всем другим обязательным условиям Группы доступности AlwaysOnAlways On availability groups .Also, verify that each of the server instance meets all other Группы доступности AlwaysOnAlways On availability groups prerequisites. Для получения дополнительных сведений настоятельно рекомендуется изучить раздел Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server).For more information, we strongly recommend that you read Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

PermissionsPermissions

Требуется членство в фиксированной роли сервера sysadmin и одно из разрешений: CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.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-SQLUsing Transact-SQL to Create and Configure an Availability Group

Сводка задач и соответствующих инструкций Transact-SQLSummary 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. Задачи Группы доступности AlwaysOnAlways On availability groups должны выполняться в той последовательности, в которой они перечислены в таблице.The Группы доступности AlwaysOnAlways On availability groups tasks must be performed in the sequence in which they are presented in the table.

ЗадачаTask Инструкции Transact-SQLTransact-SQL Statement(s) Место выполнения задачи *Where to Perform Task *
Создание конечной точки зеркального отображения базы данных (одна точка на экземпляр SQL ServerSQL Server )Create database mirroring endpoint (once per SQL ServerSQL Server instance) CREATE ENDPOINT endpointName ... ДЛЯ DATABASE_MIRRORINGCREATE ENDPOINT endpointName ... FOR 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 BACKUP и RESTORE.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-SQLUsing Transact-SQL

Примечание

Образец процедуры настройки с примерами кода для каждой из этих инструкций Transact-SQLTransact-SQL см. в разделе Пример. Настройка группы доступности, использующей проверку подлинности WindowsFor 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 GROUPTransact-SQLTransact-SQL .Create the availability group by using the CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL statement.

  3. Присоедините новую вторичную реплику к группе доступности.Join the new secondary replica to the availability group. Дополнительные сведения см. в разделе Присоединение вторичной реплики к группе доступности (SQL Server).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).

Пример. Настройка группы доступности, использующей проверку подлинности WindowsExample: Configuring an Availability Group that Uses Windows Authentication

В этом примере создается образец процедуры настройки Группы доступности AlwaysOnAlways On availability groups , где Transact-SQLTransact-SQL используется для настройки конечных точек зеркального отображения базы данных, использующих проверку подлинности Windows для создания и настройки группы доступности и ее баз данных-получателей.This example creates a sample Группы доступности AlwaysOnAlways 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:

  • Экземпляры сервера должны поддерживать Группы доступности AlwaysOnAlways On availability groups.The server instances must support Группы доступности AlwaysOnAlways On availability groups. Дополнительные сведения см. в разделе Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server).For more information, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

  • Оба образца баз данных, MyDb1 и MyDb2, должны существовать на экземпляре сервера, где будет размещаться первичная реплика.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. В следующем примере кода создается полная резервная копия баз данных MyDb1 и MyDb2.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]

Образец процедуры настройкиSample Configuration Procedure

В этом образце настройки реплика доступности будет создана на двух изолированных экземплярах сервера, у которых учетные записи служб выполняются в разных доверенных доменах (DOMAIN1 и DOMAIN2).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 ServerHost SQL ServerSQL Server Instance
ПервичнаяPrimary COMPUTER01 AgHostInstance
ВторичнаяSecondary COMPUTER02 Экземпляр по умолчанию.Default instance.
  1. Создайте конечную точку зеркального отображения базы данных с именем dbm_endpoint в экземпляре сервера, где планируется создать группу доступности (это экземпляр с именем AgHostInstance на компьютере 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. Учетная запись домена на удаленном экземпляре сервера представлена здесь как имя_домена\имя_пользователя.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.

    В следующем примере кода создается группа доступности с именем MyAG на экземпляре сервера, на котором были созданы образцы баз данных MyDb1 и MyDb2.The following code example creates an availability group named MyAG on the server instance on which the sample databases, MyDb1 and MyDb2, were created. Сначала указывается локальный экземпляр сервера, AgHostInstance, размещенный на компьютере COMPUTER01 .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.

    В следующем примере кода создаются базы данных-получатели MyDb1 и MyDb2 путем восстановления резервных копий с помощью инструкции RESTORE WITH NORECOVERY.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.

    В следующем примере кода показано применение резервных копий к базам данных-получателям MyDb1 и MyDb2 путем восстановления резервных копий с помощью инструкции RESTORE WITH NORECOVERY.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_endpointdbm_endpoint Имя, заданное для каждой конечной точки зеркального отображения базы данных.Name specified for each database mirroring endpoint.
MyAGMyAG Имя образца группы доступности.Name of sample availability group.
MyDb1MyDb1 Имя первого образца базы данных.Name of first sample database.
MyDb2MyDb2 Имя второго образца базы данных.Name of second sample database.
Домен1\пользователь1DOMAIN1\user1 Учетная запись службы экземпляра сервера, на котором планируется размещать первоначальную основную реплику.Service account of the server instance that is to host the initial primary replica.
Домен2\пользователь2DOMAIN2\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 URL-адрес конечной точки экземпляра AgHostInstance сервера SQL ServerSQL Server на компьютере COMPUTER01.Endpoint URL of the AgHostInstance instance of SQL ServerSQL Server on COMPUTER01.
TCP://COMPUTER02.Adventure-Works.com:5022TCP://COMPUTER02.Adventure-Works.com:5022 URL-адрес конечной точки экземпляра сервера SQL ServerSQL Server по умолчанию на компьютере COMPUTER02.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  
  

Связанные задачиRelated Tasks

Настройка свойств группы доступности и репликиTo configure availability group and replica properties

Завершение настройки группы доступностиTo complete availability group configuration

Другие способы создания группы доступностиAlternative ways to create an availability group

Включение функции "Группы доступности AlwaysOn"To enable Always On Availability Groups

Настройка конечной точки зеркального отображения базы данныхTo configure a database mirroring endpoint

Устранение неполадок с конфигурацией групп доступности AlwaysOnTo troubleshoot Always On Availability Groups configuration

См. такжеRelated Content

См. также:See Also

Конечная точка зеркального отображения базы данных (SQL Server) The Database Mirroring Endpoint (SQL Server)
Обзор групп доступности AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server) Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server)
Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server)Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)