Мне пришлось перенести несколько баз данных SQL Server 2008 на наш новый сервер баз данных, поэтому я скопировал их все (в файлы .bak), скопировал эти файлы в новый ящик и восстановил их (все сделано с помощью SQL Management Studio).
Все прошло нормально, но теперь я не могу войти ни в одну из баз данных, используя учетную запись SQL Server, которая продолжает работать на старой СУБД. Мой вход с аутентификацией в Windows все еще работает нормально, кстати.
У меня была идея, что пользователи и разрешения будут легко дублироваться на новом сервере базы данных, но, похоже, что-то где-то пошло не так. Буду признателен за комментарии / предложения / предложения помощи ;-)
Это известно как «осиротевшие пользователи». Вот 2 способа это исправить
Если вы можете восстановить исходную основную базу данных как «loginsource», а sys.server_principals имеет достаточно информации для генерации всех имен входа SQL Server и Windows. То есть SID и зашифрованный пароль
Если вы используете только учетные записи Windows, вы можете запустить это для каждой базы данных, чтобы сгенерировать скрипт
Автор сценария:
источник
В идеале вы должны написать сценарий для пользователей и прав доступа перед выполнением восстановления. Если этого не произошло, то вам нужно исправить положение после свершившегося факта, и, скорее всего, что-то будет упущено, но вы сможете пройти около 90% пути.
Первое, что вам нужно выяснить, это наличие на новом сервере тех же логинов. Если этого не произойдет, вы должны выяснить, все ли в порядке для создания логинов на новом сервере. Никогда не предполагайте, что они должны быть созданы, может быть веская причина, почему они вообще не существуют. Затем вы можете приступить к их созданию, просматривая таблицу sysusers.
Вы можете исправить потерянных пользователей, выполнив что-то похожее на следующее:
Этот код будет работать для SQL2008, но был написан для обратной совместимости с SQL2000.
источник
Вы можете ссылаться на следующий URL, чтобы исправить права пользователя базы данных.
http://mywindowsblog.com/?p=287
источник
Вот небольшая статья, которая объясняет решение:
Восстановление потерянных имен в SQL Server после восстановления базы данных
источник