19 сентября 2019 года    
Четверг | 22:59    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум







Разделы / Базы данных / MS SQL Server

Восстановление связи между пользователем БД и его login

Восстановление связи между пользователем БД и его login

По материалам статьи Neil Boyle на swynk.com "Fixing Broken Logins"
http://www.swynk.com/friends/boyle/default.asp

При переносе базы данных на новый сервер копированием-восстановлением или при переприкреплении файла базы данных, связь между login и пользователями базы данных разрывается. На новый сервер перемещается только половина информации, определяющей доступ клиента сервера к данным, которая содержится непосредственно в базе данных. Вторая половина необходимой для доступа к информации остаe:тся в таблице syslogins первоначального сервера и содержит информацию, относящуюся к logins. Из предыдущих выпусков рассылки Вы помните, что login - это не тот же самое, что пользователь базы данных.
При вводе новой учётной записи подключения к SQL серверу (login), она автоматически становится пользователем одной или более баз данных. Для иллюстрации связей, которые при этом создаются, можно выполнить представленный низе запрос:

select master..syslogins.name as login_name, sysusers.name as user_name from master..syslogins inner join sysusers on master..syslogins.suid = sysusers.suid

(Поле "Suid" - идентификатор (ID) учётной записи подключения к серверу, полученный из таблицы syslogins. Suid = 1 - администратор системы, Suid = -1 - учетная запись гостя).

Результат, который Вы получите, может различаться у разных баз и серверов, но связь logins и пользователей базы данных будет видна.
Обратите внимание, что имена пользователей и logins не обязательно совпадают, а учётная запись sa всегда соответствует пользователю базы dbo.
В рассматриваемом нами случае, пользователи перенесённой на другой сервер базы данных потеряют связь с соответствующими им учётными записями подключения. Попытка простого добавления на новом сервере недостающих logins успеха не возымеет ввиду того, что поля Suid у logins и пользователей БД всё же будут различны. Для правильного установления связи между пользователем БД и login, воспользуйтесь хранимой процедурой sp_change_users_login. Если клиент сервера баз данных не желает разглашать свой пароль доступа, Вам поможет процедура sp_addlogin.


Перевод: Александр Гладченко  2001г.

 Восстановление связи между пользователем БД и его login
Лента новостей


2006 (c) Copyright Hardline.ru