Назад | Перейти на главную страницу

Резервное копирование и проверка SQL Server - удалили всех пользователей?

Я настраиваю задание SQL Server для резервного копирования и проверки всех моих БД

После этого в большинстве моих баз данных пользователя больше нет в списке. Пользователь присутствует, но не связан.

Что могло вызвать это?

Вы восстанавливаете базу данных на другом экземпляре сервера? Пользователи базы данных (перечисленные в разделе «Безопасность» на уровне базы данных) - это не то же самое, что и учетные записи экземпляра сервера (указанные в разделе «Безопасность на уровне сервера»). Если вы восстанавливаете базу данных в другом экземпляре, обычно пользователи базы данных будут разъединены, поскольку учетные записи экземпляра сервера не существуют на целевом экземпляре. Даже если вы создадите логин на целевом экземпляре с тем же именем, что и на оригинальном экземпляре, он не будет работать, потому что новый логин с другим идентификатором безопасности (SID).

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

Исходный код и дополнительная информация о том, как использовать sp_help_revlogin можно найти на Вот.

Была ли восстановлена ​​база данных на другом сервере? В этом случае идентификаторы безопасности для любых учетных записей SQL Server на этом сервере будут другими. Пользователи базы данных сопоставляются с именами входа на основе SID, поэтому пользователи в конечном итоге остаются сиротами.

Чтобы обновить пользователя в соответствии с существующим логином, используйте следующий запрос:

ALTER USER username WITH LOGIN = логин