MS SQL Синхронизация пользователей (Logins) на разных инстансах

В случае построения отказоустойчивого решения на основе зеркалирования БД или использования технологии Always On Availability Groups, возникает необходимость в синхронизации пользователей SQL.

Одно из решений, создание login с одинаковым SID.

Автономная БД содержит в себе user-ов которые содержат права доступа на БД и привязаны в БД к конкретным login-ам при помощи SID (login это сущность инстанса, user — сущность БД). При переезде автономной БД на другой инстанс, связь между login и user нарушится, если login на другом инстансе создан с отличным от исзодного инстанса SID. Решением данной проблемы является создание на другом инстансе (по сути на всех инстансах куда может переехать БД) login с принудительным указанием SID такого же как и на исходном инстансе.

Текущий SID:

select SUSER_SID ('Login')

Создание Login с необходимым SID:

CREATE Login AppUser WITH password = 'password@123', SID = 0x59B662112A43D24585BFE2BF80D9BE19

Если логин уже создан, и нет необходимости переноса автономной БД между разными инстансами (например AlwaysOn), то можно использовать менее правильный способ — примапить User и Login при помощи запроса:

USE DatabaseName
ALTER USER UserName WITH LOGIN = UserLogin
0

Добавить комментарий

Ваш e-mail не будет опубликован.