Доступ к базе данных SQL Server невозможен, если пользователю предоставлен доступ через доменную группу

Доступ к базе данных SQL Server невозможен, если пользователю предоставлен доступ через доменную группу

На SQL Server 2008 R2 (работающий на Win2003) возникла проблема с входом в систему через доменные группы — доступ к экземпляру сервера предоставляется, но доступ к определенным базам данных на сервере отсутствует.

Машина SQL-сервера является членом нашего домена AD, но не является контроллером домена. Мы используем проверку подлинности Windows на SQL-сервере.

Мы создаем логины SQL Server для групп домена. Мы устанавливаем сопоставления пользователей с базой данных XXX на этом сервере, мы включаем роли datareader, datawriter и ddladmin. Что происходит дальше — пользователи домена, которые являются членами этих групп, могут подключаться к SQL Server, но не к этой базе данных XXX. Если пользователь "user1" пытается подключиться, он получает ошибку "Невозможно открыть базу данных 'XXX', запрошенную логином. Вход не удался. Вход не удался для пользователя 'domain\user1'".

Если я вручную добавлю «domain\user1» в базу данных XXX и включу роли datareader, datawriter, то у user1 не возникнет проблем с подключением.

Любопытно, что user1 может подключаться к 2 другим базам данных на том же сервере - здесь также через группу домена AD, но другую группу, созданную ранее, и пользователь НЕ настроен индивидуально как пользователь в этих базах данных. Эти базы данных обе скопированы из старой установки SQL Server 2005 через отсоединение-присоединение и работали нормально на SQL-2005, а также работают нормально на этом сервере SQL-2008 R2. (Они показывают ту же учетную запись пользователя как владельца в свойствах базы данных, что и проблемная база данных XXX.)

База данных XXX — это новая база данных, созданная на сервере R2, и группа домена AD также новая.

Я могу добавить пользователей вручную в качестве обходного пути на данный момент, но это не будет работать вечно, и мне нужна подсказка, что здесь не так. Дополнительные данные - служба SQL Server работает на учетной записи администратора домена.

Я нашел статью, описывающую точно такую ​​же проблему для SQL Server 2005:https://connect.microsoft.com/SQLServer/feedback/details/248615/login-fails-when-user-is-granted-access-via-a-domain-group Но это от 2006 года, не содержит никаких указаний на решение, и можно предположить, что проблема была исправлена.

решение1

Полное отступление: запуск SQL Server в качестве администратора домена не является лучшей практикой. Вы можете рассмотреть возможность запуска SQL в качестве непривилегированного пользователя домена.

Что касается пользователей, которые могут получить доступ к базам данных, перемещенным с помощью отсоединения/присоединения, то идентификаторы безопасности перемещаются вместе с базой данных.

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

Возможно, вам захочется получить SELECT * FROM sys.database_principalsдополнительную информацию о ваших конкретных базах данных и убедиться, что ваша доменная группа там присутствует.

решение2

Если бы мне пришлось угадывать, ваши пользователи не выходят из системы и не входят обратно после добавления в группу, которую вы используете в качестве входа в систему SQL. Токен доступа пользователя не обновляется с новым членством в группе, пока этот пользователь не выйдет из системы и не войдет обратно на свою рабочую станцию. Это объяснило бы, почему старые группы работают, а новая, которую вы тестируете, — нет.

Связанный контент