Иногда встает необходимость восстановить или перенести системные базы данных MSSQL сервера в другое место. Разумеется речь пойдет о восстановлении баз из предварительно сделанного бэкапа. Если же бэкапов нет, то и восстанавливать то собственно и нечего.
Восстановление
Первое что нам потребуется, это восстановить базу данных master. Для восстановления базы данных master необходимо сначала остановить службу SQL Server, а затем запустить ее в однопользовательском режиме. Для этого нужно открыть командную строку, перейти в нужный каталог с установленным сервером, например C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn и выполнить команду:
sqlservr.exe -m
Далее необходимо выполнить запрос:
restore database master from disk='D:\путь\к\файлу\master.bak' with replace
После того как запрос выполнен, останавливаем однопользовательский режим (Ctrl+C) и запускаем службу в обычном режиме.
Далее повторяем этот же запрос для всех остальных баз.
Перенос
Чтобы перенести системные базы данных в другое место, нужно проделать нехитрые действия.
Останавливаем службу SQL Server и запускаем программу SQL Server Configuration Manager. Слева в древовидном списке выбираем SQL Server Services, в появившемся справа списке выбираем SQL Server (MSSQLSERVER) и открываем Properties. В появившемся окне переходим на вкладку Advanced и ищем параметр Startup Parameters. Вот его то нам и необходимо подкорректировать. Меняем пути для базы данных master:
-dC:\новый\путь\к\файлу\master.mdf;-eC:\новый\путь\к\файлу\ERRORLOG;-lC:\новый\путь\к\файлу\mastlog.ldf
Переносим файлы master.mdf, mastlog.ldf и папку с логами в новое место и стартуем службу.
Затем выполняем запрос для переноса баз model, msdb и tempdb:
use master; go alter database model modify file(name=modeldev, filename='C:\новый\путь\model.mdf') go alter database model modify file(name=modellog, filename='C:\новый\путь\modellog.ldf') go alter database msdb modify file(name=MSDBData, filename='C:\новый\путь\MSDBData.mdf') go alter database msdb modify file(name=MSDBLog, filename='C:\новый\путь\MSDBLog.ldf') go alter database tempdb modify file(name=tempdev, filename='C:\новый\путь\tempdb.mdf') go alter database tempdb modify file(name=templog, filename='C:\новый\путь\templog.ldf') go
Останавлием службу и переносим соответствующие файлы .mdf и .ldf в новое место и опять запускаем службу в обычном режиме. Все готово, наши системные базы теперь находятся в другом месте.