Иногда я перемещаю базу данных (SQL Express 2012) с компьютера разработчика на сервер или наоборот, используя резервное копирование и восстановление базы данных в SQL Server Management Studio.
Всякий раз, когда я делаю это, приложения на целевом компьютере не могут получить доступ к базе данных, пока я не удалю пользователя, которого они используют, «george», из пользователей базы данных (База данных, Безопасность, Пользователи в SQL Server Management Studio) и повторно добавлю его как владелец под Security, логины, георгий / свойства, сопоставление пользователей.
Есть лучший способ сделать это? Это кажется немного запутанным.
sql-server
backup
xpda
источник
источник
CREATE LOGIN
заявлении.Ответы:
В этом разница между логинами и пользователями и тем, как они связаны друг с другом:
Что обычно происходит с аутентифицированными SQL логинами и пользователями базы данных при восстановлении, так это то, что SIDS будет не синхронизирован, что приведет к разрыву взаимосвязи. Это отношение должно быть восстановлено, прежде чем вы сможете подключиться к базе данных с использованием этого имени входа, поскольку в глазах SQL Server эти участники больше не подключены. Вы можете исправить это с помощью следующего SQL:
Вы можете использовать следующий запрос в контексте вашей базы данных для проверки на наличие сирот:
источник
Вы можете посмотреть на изменение базы данных в автономную базу данных . Содержащийся пользователь базы данных аутентифицируется базой данных, а не на уровне экземпляра посредством входа в систему. Это упрощает перемещение базы данных в другой экземпляр.
Если нет, вы можете сделать резервную копию информации для входа в систему с помощью сценариев sp_help_revlogin, предоставленных в этой КБ поддержки Microsoft . И выполните скрипт вывода на новом экземпляре.
источник
Я использую приведенный ниже скрипт для переноса / создания учетных записей пользователей и логинов. Запустите его с сервера, на котором вы восстановили базу данных, и укажите исходное имя сервера в качестве параметра процедуры.
Я не принимаю кредит на процедуру, как я получил ее из другого места, но она отлично работает.
источник
Вот решение, которое сработало для меня. Что он делает, чтобы:
EXEC sp_change_users_login 'REPORT'
EXEC sp_change_users_login 'UPDATE_ONE','<userName>','<userName>'
источник
Вы всегда можете просто попытаться повторно связать всех пользователей в базе данных с одноименными именами входа на сервере базы данных.
источник
Я думал, что стоит отметить это простое решение проблемы с постерами. Это сценарий, который я запускаю на SQL Server 2008, когда я восстанавливаю производственную базу данных с одного сервера в базу данных разработки / тестирования на другом сервере, когда имя пользователя находится в разделе Безопасность> Пользователи базы данных, НО
'login name'
отсутствует в свойстве users в Вкладка "Общие":Ссылка на MSDN здесь Обратите внимание, что в статье рекомендуется использовать ALTER USER вместо более новых версий SQL.
источник