ним відновленням
не захищених/асинхронний
Захищений відрізняються від асинхронного тим, що не чекають підтвердження прийняття транзакції на дзеркальному сервері, а продовжують працювати і накидають в чергу нові і нові транзакції.
Захищений з автоматичним відновленням вимагає для автоматичного відновлення використовувати 3-й сервер (що стежить) і в принципі корисний тільки якщо у вас в додатку можна вказати резервний сервер для перемикання в разі коли не працює основний.
Розглянемо роботу в захищеному режимі з ручним відновленням .
Частина 1. Налаштування зв'язку сервера. p align="justify"> Для зв'язку серверів один з одним на обох машинах створюються контрольні точки , відкриваються порти на з'єднання, створюються користувачі, сертифікати і пр.
Створимо контрольні точки, для авторизації ми будемо використовувати сертифікат згенерований MS SQL сервером (так само можна використовувати і інші сертифікати).
Створюємо сертифікат на головному сервері і збережемо його в паку D: Certs
USE MASTERNOT EXISTS (SELECT 1 FROM sys.symmetric_keys where name = '# # MS_DatabaseMasterKey # #') MASTER KEY ENCRYPTION BY PASSWORD = 'секретний пароль'NOT EXISTS (select 1 from sys.databases where [ is_master_key_encrypted_by_server] = 1) MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEYNOT EXISTS (SELECT 1 FROM sys.certificates WHERE name = 'PrincipalServerCert') CERTIFICATE PrincipalServerCertSUBJECT = 'Principal Server Certificate', _DATE = '08/15/2011 ', _DATE =' 08/15/2021 '; CERTIFICATE PrincipalServerCert TO FILE =' D: Certs PrincipalServerCert.cer '
Створимо контрольну точку DBMirrorEndPoint на головному сервері.
USE MASTERNOT EXISTS (SELECT * FROM sys.endpoints WHERE type = 4) ENDPOINT DBMirrorEndPoint = STARTED AS TCP (LISTENER_PORT = 5022) DATABASE_MIRRORING (AUTHENTICATION = CERTIFICATE PrincipalServerCert, ENCRYPTION = REQUIRED = ALL
)
Створюємо сертифікат і контрольну точку DBMirrorEndPoint на дзеркалі, за аналогією з головним.
USE MASTERNOT EXISTS (SELECT 1 FROM sys.symmetric_keys where name = '# # MS_DatabaseMasterKey # #') MASTER KEY ENCRYPTION BY PASSWORD = 'секретний пароль'NOT EXISTS (select 1 from sys.databases where [ is_master_key_encrypted_by_server] = 1...