Пример. Настройка зеркального отображения базы данных при помощи сертификатов (язык Transact-SQL)
В этом примере описаны все действия, выполняемые при создании сеанса зеркального отображения базы данных с использованием проверки подлинности на основе сертификатов. Примеры в этом подразделе используют язык Transact-SQL. За исключением случаев, когда можно гарантировать безопасность сети, для соединений зеркального отображения базы данных рекомендуется использовать шифрование.
При копировании сертификата в другую систему используйте безопасный метод копирования. Отнеситесь с особым вниманием к безопасному хранению сертификатов.
Пример
В следующем примере показано, что необходимо сделать на одном участнике, который находится на узле HOST_A. В этом примере два участника являются экземплярами сервера по умолчанию в трех компьютерных системах. Два экземпляра сервера запущены в ненадежных доменах Windows, поэтому необходима проверка подлинности на основе сертификата.
Начальная основная роль принимается узлом HOST_A, а зеркальная роль — узлом HOST_B.
Настройка зеркального отображения базы данных с помощью сертификатов состоит из четырех основных этапов, три из которых — 1, 2 и 4 — показаны в этом примере. Ниже приведены эти этапы.
Настройка исходящих соединений
В этом примере приводится пошаговое описание следующих процессов.
Настройка узла Host_A для исходящих соединений.
Настройка узла Host_B для исходящих соединений.
Дополнительные сведения о настройке зеркального отображения базы данных см. в разделе Как включить использование сертификатов для исходящих соединений при зеркальном отображении базы данных (Transact-SQL).
Настройка входящих соединений
В этом примере приводится пошаговое описание следующих процессов.
Настройка узла Host_A для входящих соединений.
Настройка узла Host_B для входящих соединений.
Дополнительные сведения о настройке зеркального отображения базы данных см. в разделе Как разрешить использование сертификатов для входящих соединений (Transact-SQL).
Создание зеркальной базы данных
Дополнительные сведения о создании зеркальной базы данных см. в разделе Как подготовить зеркальную базу данных для зеркального отображения (Transact-SQL).
Настройка участников зеркального отображения
Настройка исходящих соединений
Настройка узла Host_A для исходящих соединений
При необходимости создайте в базе данных master главный ключ базы данных.
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>'; GO
Сделайте сертификат для данного экземпляра сервера.
USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate'; GO
Создайте конечную точку для экземпляра сервера с использованием его сертификата.
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
Создайте резервную копию сертификата HOST_A и скопируйте ее на другую систему HOST_B.
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer'; GO
С помощью безопасного метода скопируйте файл «C:\HOST_A_cert.cer» на узел HOST_B.
Настройка узла Host_B для исходящих соединений
При необходимости создайте в базе данных master главный ключ базы данных.
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>'; GO
Создайте сертификат для экземпляра сервера HOST_B.
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate for database mirroring'; GO
Создайте конечную точку зеркального отображения для экземпляра сервера на узле 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
Создайте резервную копию сертификата HOST_B.
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer'; GO
С помощью безопасного метода скопируйте файл «C:\HOST_B_cert.cer» на узел HOST_A.
Дополнительные сведения см. в разделе Как включить использование сертификатов для исходящих соединений при зеркальном отображении базы данных (Transact-SQL).
[В начало]
Настройка входящих соединений
Настройка узла Host_A для входящих соединений
Создайте имя входа на узле HOST_A для узла HOST_B.
USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#'; GO
Создайте пользователя для этого имени входа.
CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO
Свяжите сертификат с пользователем.
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO
Предоставьте данной учетной записи разрешение CONNECT на эту удаленную конечную точку зеркального отображения.
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO
Настройка узла Host_B для входящих соединений
Создайте имя входа на узле HOST_B для узла HOST_A.
USE master; CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2'; GO
Создайте пользователя для этого имени входа.
CREATE USER HOST_A_user FOR LOGIN HOST_A_login; GO
Свяжите сертификат с пользователем.
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\HOST_A_cert.cer' GO
Предоставьте данной учетной записи разрешение CONNECT на эту удаленную конечную точку зеркального отображения.
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; GO
Важно! |
---|
При необходимости запуска в режиме высокого уровня защиты с автоматической отработкой отказа нужно повторить эти шаги установки, чтобы настроить следящий сервер для исходящих и входящих соединений. При настройке входящих соединений с задействованным следящим сервером необходимо настроить имена входа и пользователей для следящего сервера на обоих участниках и для обоих участников на следящем сервере. |
Дополнительные сведения см. в разделе Как разрешить использование сертификатов для входящих соединений (Transact-SQL).
[В начало]
Создание зеркальной базы данных
Дополнительные сведения о создании зеркальной базы данных см. в разделе Как подготовить зеркальную базу данных для зеркального отображения (Transact-SQL).
Настройка участников зеркального отображения
В экземпляре зеркального сервера, расположенного на узле 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 AdventureWorks2008R2 SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024'; GO
В экземпляре основного сервера, расположенного на узле 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 AdventureWorks2008R2 SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024'; GO
В этом примере предполагается, что сеанс будет выполнен в режиме высокой производительности. Чтобы настроить этот сеанс для использования режима высокой производительности, в экземпляре основного сервера (на узле HOST_A) установите безопасность транзакций в положение OFF.
--Change to high-performance mode by turning off transacton safety. ALTER DATABASE AdventureWorks2008R2 SET PARTNER SAFETY OFF; GO
Примечание При необходимости запуска в режиме высокого уровня защиты с автоматической отработкой отказа оставьте безопасность транзакций в положении FULL (установка по умолчанию) и добавьте следящий сервер как можно быстрее после выполнения второй инструкции SET PARTNER 'partner_server'. Обратите внимание, что следящий сервер вначале нужно настроить для исходящих и входящих соединений.
[В начало]
См. также