Мы используем группы активных каталогов и применяем аутентификацию Windows с аутентификацией. Из SQL Server мы можем затем определить доступ на основе группы AD, в которой находится пользователь, создав один логин SQL Server для каждой группы AD. Не уверен, что это лучше или хуже, чем роли БД, но это означает, что роли управляются вне каждой базы данных.
Распространение доступа к базам данных - это либо ручная операция, либо короткий сценарий SQL, чтобы гарантировать, что имена входа в базе данных указывают на действительный логин SQL Server (который, в свою очередь, является группой AD).
Обычно это хорошо работает для общего случая. Затем мы можем использовать роли БД для назначения встроенных ролей (например, db_datareader) каждой группе AD
Редко кому-то нужен какой-то определенный доступ к базе данных за пределами этой модели. Мы либо в конечном итоге откроем его для группы в целом, если он не будет инвазивным или критическим, либо мы создадим учетную запись для каждого пользователя, которой нужно управлять отдельно. Мы прилагаем все усилия, чтобы свести их к минимуму и время от времени очищать их, чтобы о них не забыли и не забыли.