Проблема в том, что восстановление возвращает пользователей БД из исходного экземпляра сервера, но новый экземпляр обычно ничего не знает об этих именах пользователей. Вы увидите их в разделе «Безопасность» на уровне базы данных, но у них нет соответствующих имен входа на уровне сервера.
Вам необходимо заново присоединить пользователей базы данных с учетными записями сервера на экземпляре, на котором вы восстановили базу данных.
Есть несколько способов сделать это:
Создайте для них новые логины на новом экземпляре. Затем вам нужно будет удалить их как пользователей базы данных в новом экземпляре и добавить их новые имена входа. Это кажется странным, учитывая, что вы можете создать те же имена для входа, но SID (идентификаторы безопасности) будут другими, и именно это SQL использует для идентификации пользователя. Это достаточно просто для одного или двух входов.
Если вы хотите поддерживать одинаковых пользователей с одинаковыми SID в разных экземплярах, используйте хранимую процедуру sp_help_revlogin . Скопируйте код по ссылке, которая создаст необходимые хранимые процедуры, и запустите его на сервере, с которого вы хотите скопировать пользователей. Он сгенерирует SQL-скрипт, который вы сможете запустить на целевом сервере, чтобы создать тех же пользователей, которые переносят SID, пароли и все остальное. Этот способ можно использовать, если у вас много пользователей баз данных, которым необходимо повторно подключиться к целевому экземпляру, или если вы не знаете паролей к одному или нескольким логинам SQL на исходном экземпляре.
EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';
вместо этого. :)