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

Как объединить безопасность СУБД с безопасностью базы данных MSSQL 2005 Express?

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

osql -s myserver -E -Q " BACKUP DATABASE MyDB TO DISK = 'C:\SQLBackups\MyDB.bak'"

Основное использование этого пользователя на уровне движка - для подключения извне (например, приложение IIS).

databaseName1 сопоставлен с пользователем databaseUser1

Мы хотим знать, какую резервную копию исходного движка базы данных мы должны сделать, чтобы подключить пользователей со всеми их паролями и сопоставлениями. Любые идеи?

Пользователи базы данных отличаются от учетных записей SQL Server. Пользователи базы данных восстанавливаются как часть базы данных, а учетные записи сервера базы данных - нет. Проблема, с которой вы столкнулись, часто называется пользователями-сиротами.

У вас есть 2 варианта:

  1. Использовать sp_change_users_login «Сообщите», чтобы увидеть, какие пользователи осиротели, затем используйте «auto_fix», чтобы создать логин на сервере базы данных. Вам нужно будет делать это каждый раз при восстановлении базы данных.

  2. Использовать sp_help_revlogin чтобы скопировать только потерянные логины в базу данных, в которой вы выполнили восстановление. это немного сложнее, но если это база данных, которую вы регулярно восстанавливаете, то это стоит усилий, поскольку вам нужно будет сделать это только ОДИН РАЗ.

восстановление мастера - не реальный вариант, если вы не восстанавливаете ВСЕ базы данных на новый сервер, это может стать беспорядочным!

В SQL 2005 MS представила sp_help_revlogin. Набор результатов представляет собой сценарий логинов и их паролей (хешированных), который отлично подходит для перемещения логинов (особенно логинов SQL) без необходимости перемещать мастер.

Чтобы восстановить логины, вам также потребуется сделать резервную копию и восстановить основную базу данных. Если вы не хотите этого делать, вы можете просто создать новые логины для осиротевших пользователей в своей базе данных, используя sp_change_users_login.