Пользователь с логином становится пользователем без логина при восстановлении в другом экземпляре - PullRequest
0 голосов
/ 21 мая 2019

У меня есть несколько имен входа SQL Server, которые настроены в экземпляре А. Эти имена входа SQL Server полностью соответствуют конкретным базам данных. Поэтому в этих базах данных имя пользователя указывается в качестве пользователя в контейнере безопасности. Когда я восстанавливаю резервные копии из экземпляра A в экземпляр B, пользователь уровня базы данных становится «пользователем без входа в систему». Пользователь существует на уровне сервера в экземпляре B, и это не тот случай, когда вход в систему будет потерян. Он буквально становится «пользователем SQL без логина», а не «пользователем SQL с логином». У кого-нибудь есть идеи, как решить эту проблему? Я исчерпал все свои варианты до сих пор. Кажется, ничто не работает, кроме удаления пользователя на уровне базы данных и добавления его в логин на уровне сервера для этой базы данных. Однако я не могу продолжать это делать, поскольку это является частью автоматизированного процесса.

1 Ответ

0 голосов
/ 21 мая 2019

Проблема в том, что вы неправильно создали логины в Экземпляре B, поэтому у них разные идентификаторы безопасности, чем у логинов в Экземпляре A. Пользователи базы данных ссылаются на SID, а не на имя входа, поэтому имя входа совпадает с именем базы данных. пользователь не видит логин с идентификатором безопасности, к которому он был присоединен.

Таким образом, вам необходимо удалить имена входа из экземпляра B, которые должны совпадать с именами входа из экземпляра A. Затем используйте sp_help_revlogin из https://support.microsoft.com/en-us/help/918992/how-to-transfer-logins-and-passwords-between-instances-of-sql-server, чтобы скопировать эти имена входа в экземпляр B.

Вам нужно только создать хранимые процедуры sp_hexadecimal и sp_help_revlogin для экземпляра, из которого вы копируете логины, но не повредит иметь его во всех ваших экземплярах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...