На SQL Server 2008 R2 (работающем на Win2003) у нас есть проблема с входом в систему через группы домена - доступ для входа предоставляется экземпляру сервера, но не может получить доступ к определенным базам данных на сервере.
Компьютер с SQL-сервером является членом нашего домена AD, но не является контроллером домена. Мы используем проверку подлинности Windows на SQL Server.
Создаем логины SQL Server для доменных групп. Мы устанавливаем сопоставления пользователей с базой данных XXX на этом сервере, включаем роли datareader, datawriter и ddladmin. Тогда происходит следующее: пользователи домена, которые являются членами этих групп, могут подключаться к SQL Server, но не к этой базе данных XXX. Если пользователь «user1» пытается подключиться, он получает сообщение об ошибке «Невозможно открыть базу данных« XXX », запрошенную для входа в систему. Ошибка входа. Ошибка входа для пользователя« домен \ user1 »».
Если я вручную добавлю домен \ 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 года, не содержит подсказок относительно решения, и следует предполагать, что оно было исправлено.
Завершите в сторону: запуск SQL Server от имени администратора домена - не лучшая практика. Вы можете рассмотреть возможность запуска SQL как непривилегированного пользователя домена.
Что касается пользователей, которые могут получить доступ к базам данных, перемещенным посредством отсоединения / присоединения, то идентификаторы безопасности перемещаются вместе с базой данных.
Если бы мне пришлось предположить, основываясь на поведении, я бы либо сказал, что SQL не может определить членство в группе, либо что разрешения для самих баз данных отсутствуют.
Вы можете захотеть бежать SELECT * FROM sys.database_principals
для получения дополнительной информации о ваших конкретных базах данных и убедитесь, что ваша группа домена там.
Если бы мне пришлось догадаться, ваши пользователи не выходят из системы и не снова включаются после добавления в группу, которую вы используете для входа в систему e SQL. Маркер доступа пользователя не обновляется с учетом нового членства в группе до тех пор, пока этот пользователь не выйдет из системы и не войдет обратно на свою рабочую станцию. Это объяснило бы, почему старые группы работают, а новая, которую вы тестируете, нет.