Назад | Перейти на главную страницу

SQL 2000 и названия групп

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

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

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

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

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

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

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

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

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

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

sp_adduser
sp_addrolemember
GRANT
sp_change_users_login
sp_dropuser

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

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

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

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