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

Как восстановить базу данных, чтобы использовать ее на сервере, на котором у меня нет роли администратора безопасности

В экземпляре SQL 2008 у меня есть логин с ролями dbcreator и public. Когда я восстанавливаю базу данных на этом сервере, я не могу использовать эту базу данных, потому что все сопоставления пользователь -> логин в ней нарушены (идентификаторы на разных серверах разные).

Существует хранимая процедура sp_change_users_login 'Auto_Fix', userName, но я не могу ее использовать, потому что вообще не могу получить доступ к базе данных. Наконец, поскольку у меня нет роли securityAdmin, я не могу сопоставить логины с пользователями базы данных.

Есть ли способ предоставить мне разрешение на доступ к базе данных в процессе восстановления?

Нет извините.

"securityAdmin" находится на уровне сервера и не имеет отношения к каким-либо правам базы данных.

Обратите внимание (к вашему сведению, пока мало!) Это исправлено для SQL Server 2011 (также известного как Denali) с «автономными базами данных».

Авторизованный администратор может написать вспомогательную процедуру, которая исправляет сопоставление. Затем он может подписать процедуру и дать ей необходимое разрешение посредством подписи кода (см. Подписание хранимой процедуры). Затем он может предоставить вам разрешение на выполнение этой вспомогательной процедуры, и вы сможете выполнить операцию (исправить сломанные входы в систему) без привилегии securityAdmin.

В конечном итоге я решил использовать массовый импорт каждой таблицы в базе данных вместо восстановления.

Насколько я знаю, вам нужен кто-то с dbo, чтобы исправить это за вас. Я могу ошибаться в этом, может быть, есть бэкдор, но он почти такой, как задумано. У вас есть только dbcreator, поэтому вы не можете копаться в БД после ее создания.