![]() |
#4 |
Участник
|
В принципе, все несложно.
Особенности: 1. При восстановлении лучше не делать пользователя bmssa владельцем базы. 2. После восстановления запустить от пользователя sa команду sp_change_users_login 'Auto_Fix', 'bmssa'. После чего проверить, что user bmssa в новой базу данных соответствует login bmssa. Если все слишком запущено и такой путь не проходит, нужно сделать переназначение всех объектов базы на другого владельца, а после удаление из БД пользователя bmssa создать его заново и переназначить владельцем объектов БД. Но это работает дольше. Где-то у Мазуркина и на этом сайте валяется алгоритм... В Вашем случае попробуйте такой алгоритм: 1. Создать новую БД с владельцем sa (bmssa отдыхает). 2. Восстановить БД из архива. При этом в БД появится пользователь bmssa, не связанный ни с каким логином. 3. Запустить от пользователя sa команду sp_change_users_login 'Auto_Fix', 'bmssa' в новой БД. Внимательно прочитайте последнее предложение! 4. Проверить, что логин bmssa стал соответствовать пользователю bmssa в новой базе. Теперь объяснение ПОЧЕМУ так происходит. В SQL сервере в архиве сохраняется информация о всех пользователях: его ID в БД, его имя и соответствующий ему логин. Но в разных серверах ID у логинов с одним именем могут и не совпасть (что логично). Поэтому при восстановлении чужой БД сервер не может правильно связать пользователей БД с логинами сервера. Правильно он восстанавливает только объекты с владельцем dbo - там все просто. И еще вопрос можно? А ЗАЧЕМ так делать? Экспортом - импортом не проще? |
|