SQL Server Как восстановить базу данных из bak файла бэкапа (restore DB from backup)

Задача: восстановить базу данных из файла бэкапа.
Шаг за шагом с иллюстрациями рассмотрим как это сделать на примере СУБД Microsoft SQL Server 2014. Кроме восстановления посмотрим также как сделать линковку (связь) пользователя базы данных и логина СУБД (будет использовать SQL скрипт sp_change_users_login).
Итак, залогиньтесь в СУБД SQL Server и в дереве в контекстном меню пункта Databases выберите пункт "Restore Database...":


В параметрах выберем "Device" и перейдем по кнопке "Обзор" (кнопка с многоточием):


В открывшемся окне нажимаем "Add" и находим файл бэкапа базы данных:


Нажимаем ОК:


Перед началом рекомендуется проверить корректность файла, нажав кнопку "Verify Backup Media":


Далее перейдем в левом меню на раздел "Files" и проверим пути для сохранения восстановленной базы данных. При необходимости меняем их (не обязательно):


Также можно перейти в раздел "Options" и сделать настройки, если требуется (не обязательно):


Нажимаем ОК и дожидаемся сообщения об успешном восстановлении базы:


Если база данных содержала информацию о пользователях, то необходимо проверить их связь с логинами. Для этого в дереве находим вновь воссозданную БД, раскрываем пункт "Security" - "Users" и выбираем какого-либо существующего пользователя и в контекстном меню переходим на пункт "Properties":


В открывшемся окне свойств пользователя мы видим, что пользователь существует только в контексте это базы (т.е. не связан ни с каким логином "SQL user without login"):


Это не позволит Вам подключиться к базе данных под данным пользователем. Поэтому создадим логин для этого пользователя (если логин уже существует, пропустите этот шаг). В дереве объектов СУБД перейдем на уровень выше (выше, чем текущая БД) в пункт "Security" и в контекстном меню пункта "Logins" выберем "New Login...":


В открывшемся окне заполняем:
- login name - имя логина (я всегда делаю его одноименным с пользователем базы)
- выбираем параметр "SQL Server authentication" и задаем пароль
- снимаем "галку" "Enforce password policy"
- default database - прописываем нужную базу данных:


Далее можно перейти в левом меню в раздел "User Mapping", где увидим, что можно закрепить за созданным логином некого пользователя в базе. Если у Вас база данных не содержит никаких пользователей, то задайте эти параметры, как показано на рисунке (в противном случае пропустите этот шаг) и будет автоматически создан пользователь БД связанный с данным логином:


Если же Вы задали вышеуказанный параметр, а пользователь уже существует, то Вы получите следующее сообщение об ошибке:
Microsoft SQL Server Management Studio
Create failed for User 'ShortURLDBUser'.  (Microsoft.SqlServer.Smo)
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
User, group, or role 'ShortURLDBUser' already exists in the current database. (Microsoft SQL Server, Error: 15023)


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

Чтобы связать логин СУБД с пользователем конкретной базы данных выполним следующий SQL-скрипт:
use ShortUrlDB
go
EXEC sp_change_users_login 'Update_One', 'ShortUrlDBUser', 'ShortUrlDBUser'
go


Теперь, если снова перейти в свойства пользователя БД, то мы видим, что пользователь связан с только что созданным логином.


(с) Ella S.

1 комментарий: