Пример. Настройка зеркального отображения базы данных с помощью сертификатов (язык Transact-SQL)

Область применения:SQL Server

В этом примере описаны все действия, выполняемые при создании сеанса зеркального отображения базы данных с использованием проверки подлинности на основе сертификатов. В примерах в этом подразделе используется язык Transact-SQL. За исключением случаев, когда сеть гарантированно защищена, рекомендуется для соединений зеркального отображения базы данных применять шифрование.

При копировании сертификата на другую систему используйте безопасный метод копирования. Отнеситесь с особым вниманием к хранению сертификатов в безопасном месте.

Пример

В следующем примере показано, что необходимо сделать на одном партнёре, размещённом на HOST_A. В этом примере два участника являются экземплярами сервера по умолчанию в трех компьютерных системах. Два экземпляра сервера запущены в ненадежных доменах Windows, поэтому необходима проверка подлинности на основе сертификата.

Начальная основная роль принимается узлом HOST_A, а зеркальная роль — узлом HOST_B.

Настройка зеркального отображения базы данных с помощью сертификатов состоит из четырех основных этапов, три из которых — 1, 2 и 4 — показаны в этом примере. Ниже приведены эти этапы.

  1. Настройка исходящих соединений

    В этом примере приводится пошаговое описание следующих процессов.

    1. Настройка узла Host_A для исходящих соединений.

    2. Настройка узла Host_B для исходящих соединений.

    Сведения об этом этапе настройки зеркального отображения базы данных см. в статье Включение использования сертификатов для исходящих соединений в конечной точке зеркального отображения базы данных (Transact-SQL).

  2. Настройка входящих соединений

    В этом примере приводится пошаговое описание следующих процессов.

    1. Настройка узла Host_A для входящих соединений.

    2. Настройка узла Host_B для входящих соединений.

    Сведения об этом этапе настройки зеркального отображения базы данных см. в статье Включение использования сертификатов для входящих соединений в конечной точке зеркального отображения базы данных (Transact-SQL).

  3. Создание зеркальной базы данных

    Дополнительные сведения о создании зеркальной базы данных см. в статье Подготовка зеркальной базы данных к зеркальному отображению (SQL Server).

  4. Настройка партнёров зеркалирования

Настройка исходящих соединений

Настройка узла Host_A для исходящих соединений

  1. В базе данных master создайте, если это необходимо, главный ключ базы данных. Замените <password> допустимым паролем.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';  
    GO  
    
  2. Сделайте сертификат для данного экземпляра сервера.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate';  
    GO  
    
  3. Создайте конечную точку зеркалирования для экземпляра сервера с помощью сертификата.

    CREATE ENDPOINT Endpoint_Mirroring  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=7024  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE HOST_A_cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Создайте резервную копию сертификата HOST_A и скопируйте ее на другую систему HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. Используя любой безопасный метод копирования, скопируйте файл C:\HOST_A_cert.cer на узел HOST_B.

Настройка узла Host_B для исходящих соединений

  1. В базе данных master создайте, если это необходимо, главный ключ базы данных.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
    GO  
    
  2. Создайте сертификат для экземпляра сервера HOST_B.

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  3. Создайте конечную точку зеркалирования для экземпляра сервера на узле HOST_B.

    CREATE ENDPOINT Endpoint_Mirroring  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=7024  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE HOST_B_cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Создайте резервную копию сертификата HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  5. Используя любой безопасный метод копирования, скопируйте файл C:\HOST_B_cert.cer на хост HOST_A.

Дополнительные сведения см. в разделе Включение использования сертификатов для исходящих соединений в конечной точке зеркального отображения базы данных (Transact-SQL).

[Начало примера]

Настройка входящих соединений

Настройка узла Host_A для входящих соединений

  1. Создайте имя входа на узле HOST_A для узла HOST_B. Замените <password> допустимым паролем.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '<password>';  
    GO  
    
  2. --Создайте пользователя для этого логина.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. Свяжите сертификат с пользователем.

    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    
  4. Предоставьте имени входа разрешение CONNECT для удаленной конечной точки зеркального отображения.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];  
    GO  
    

Настройка узла Host_B для входящих соединений

  1. Создайте имя входа на узле HOST_B для узла HOST_A.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  2. Создайте пользователя для этой учётной записи.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  3. Свяжите сертификат с пользователем.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  4. Предоставьте имени входа разрешение CONNECT для удаленной конечной точки зеркального отображения.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];  
    GO  
    

Внимание

Если планируется работа в режиме высокой безопасности с автоматическим переключением при отказе, необходимо повторить те же шаги настройки, чтобы настроить сервер-свидетель для исходящих и входящих подключений. При настройке входящих соединений с задействованным следящим сервером необходимо настроить имена входа и пользователей для следящего сервера на обоих участниках и для обоих участников на следящем сервере.

Дополнительные сведения см. в статье Настройка конечной точки зеркального отображения базы данных для использования сертификатов для входящих подключений (Transact-SQL).

[Начало примера]

Создание зеркальной базы данных

Дополнительные сведения о создании зеркальной базы данных см. в статье Подготовка зеркальной базы данных к зеркальному отображению (SQL Server).

Настройка партнёров по зеркалированию

  1. На экземпляре зеркального сервера на HOST_B укажите экземпляр сервера на HOST_A в качестве партнёра (сделав его начальным экземпляром основного сервера). Замените допустимый сетевой адрес на TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024. Дополнительные сведения см. в статье Указание сетевого адреса сервера (зеркальное отображение базы данных).

    --At HOST_B, set server instance on HOST_A as partner (principal server):  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  2. В экземпляре основного сервера, расположенного на узле HOST_A, установите в качестве участника экземпляр сервера, расположенного на узле HOST_B (сделав его начальным экземпляром зеркального сервера). Замените допустимый сетевой адрес на TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024.

    --At HOST_A, set server instance on HOST_B as partner (mirror server).  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  3. В этом примере предполагается, что сеанс будет выполнен в режиме высокой производительности. Чтобы настроить этот сеанс для использования режима высокой производительности, в экземпляре основного сервера (на узле HOST_A) установите безопасность транзакций в положение OFF.

    --Change to high-performance mode by turning off transaction safety.  
    ALTER DATABASE AdventureWorks   
        SET PARTNER SAFETY OFF  
    GO  
    

    Примечание.

    Если вы планируете работать в режиме высокой безопасности с автоматическим переключением при отказе, оставьте для параметра безопасности транзакций значение FULL (параметр по умолчанию) и как можно скорее после выполнения второго оператора SET PARTNER 'partner_server' добавьте свидетеля. Обратите внимание, что следящий сервер вначале нужно настроить для исходящих и входящих соединений.

[Начало примера]

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