Пользователь не работает после резервного копирования и восстановления базы данных на другом сервере в SQL Server 2005

У нас есть база данных с именем "foo" на первом экземпляре сервера SQL, которая называется "SQL01", которая резервируется еженедельно с помощью моментального снимка с помощью Snap Manager для SQL Server, а затем клонируется и восстанавливается во втором экземпляре сервера с именем "SQL02". В базе данных foo есть пользователь sql с именем 'someuser', у которого есть права чтения данных и хранимых процедур.

После операции восстановления я не могу получить доступ к базе данных foo на SQL02 с помощью пользователя someuser. Я вижу, что разрешения, кажется, установлены правильно для пользователя, но не могут получить доступ к базе данных. Ошибка: "Основной сервер"someuser"не может получить доступ к базе данных" foo "в текущем контексте безопасности".

Если я удаляю пользователя из базы данных, а затем добавляю его снова, он работает нормально. Есть идеи?

5 ответов

Решение

sp_change_users_login - это старый способ работы, и, поскольку вы используете SQL Server 2005, попробуйте использовать синтаксис ALTER USER.

http://sqlblog.com/blogs/greg_low/archive/2009/02/02/much-ado-about-logins-and-sids.aspx

http://msdn.microsoft.com/en-us/library/ms176060.aspx

Проверьте sp_change_users_login Сделайте sp_change_users_login 'report', если есть результаты, используйте sp_change_users_login 'autofis','someuser'

Вы , вероятно, обнаружите, что вам нужно удалить пользователя из базы данных, которую вы восстановили, затем открыть пользователя под защитой сервера и снова установить его разрешения для этой БД

Логины сервера хранятся в базе данных master и не перемещаются вместе с базами данных приложения. Вы можете создать логин на уровне сервера и затем использовать sp_change_users_login 'auto_fix','loginname', как предложено Sankar. Чтобы переместить больший набор имен входа, перейдите по следующей ссылке: Как передавать имена входа и пароли между экземплярами SQL Server.

Чтобы избежать этой проблемы, добавьте своего пользователя (пользователя, который выполняет резервное копирование) в качестве пользователя базы данных резервного копирования, и ваш пользователь должен иметь доступ (логин) в новом экземпляре.

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