SQL 2000 и имена групп

У меня есть сервер SQL 2000, который имеет базы данных, в разделе пользователя объекта базы данных у меня есть несколько групп NT 4.0. Эти группы были перенесены в Active Directory некоторое время назад с использованием ADMT с историей SID. Исходные группы домена источника с тех пор были удалены. Показанный доступ - olddomain\groupname. Я не знаю почему, если бы у них были права ntfs, они бы автоматически обновились до target\groupname.

Пользователи в домене AD по-прежнему имеют доступ к базе данных, поскольку они являются членами перенесенной группы (Target\groupname). Я размышлял

1) Почему старая группа (источник \ имя_группы) появляется, поскольку она больше не существует. Но доступ все еще предоставляется целевой группе? 2) Есть ли простой способ обновить имя группы с source\groupname на target\groupname?

Спасибо за любую помощь.

2 ответа

1) Почему старая группа (источник \ имя_группы) появляется, поскольку она больше не существует. Но доступ все еще предоставляется целевой группе?

Если вы посмотрите на имя входа SQL Server, назначенное данному пользователю базы данных, вы, вероятно, обнаружите, что имя входа имеет новое доменное имя. Пользователи базы данных SQL Server 2000 имеют две основные цели: (1) контекст безопасности базы данных; и (2) имя схемы базы данных (в более поздних версиях пользователи и схемы являются полностью отдельными объектами).

2) Есть ли простой способ обновить имя группы с source\groupname на target\groupname?

Технически говоря, хотя SQL Server 2000 не предоставляет способа прямого переименования пользователя базы данных, вы можете обойти это ограничение, выполнив следующие действия:

  1. добавление нового пользователя базы данных с нужным именем (например, target \ groupname);
  2. назначение тем же ролям и / или разрешениям для нового пользователя, которые назначены старому пользователю;
  3. изменение пользователя базы данных, связанного с логином SQL Server; а также
  4. удаление старого пользователя базы данных (Предупреждение: перед удалением старого пользователя я бы настоятельно рекомендовал проверить весь исходный код и объектные зависимости. Если вы сомневаетесь, лучше оставьте его там, где он есть, чем сломайте отлично работающее приложение).

Все описанное выше может быть выполнено непосредственно через SQL Enterprise Manager, но если вам нужно написать сценарий операции, вы можете использовать следующие хранимые процедуры и команды Transact-SQL (дополнительную информацию об использовании см. В электронной документации по SQL):

sp_adduser
sp_addrolemember
GRANT
sp_change_users_login
sp_dropuser

SQL помещает запись для пользователя в таблицу sysusers базы данных, когда вы предоставляете доступ для входа в базу данных. Одним из столбцов в этой таблице является имя, которое для имен входа Windows представляет собой домен \user_or_group_name учетной записи или группы (в зависимости от того, как именно вы выполняете сопоставление пользователей БД). Ваше старое доменное имя, вероятно, происходит из этой записи в таблице sysusers. Доступ основан на SID, поэтому он все еще работает.

Запустите этот запрос:

select * from [dbname].dbo.sysusers
where name='olddomain\groupname'

и посмотрите на созданный столбец. Я предполагаю, что это произойдет до того времени, когда вы перенесли свой домен.

Другие вопросы по тегам