Небольшая заметка как действовать в случае когда вам необходимо перенести базу tempdb на другой диск. Такая ситуация может случится в результате сбоя диска, на котором она была размещена в рабочем состоянии и вам потребуется перенос tempdb на другой диск для того, чтобы запустить SQL Server.
Запланированный перенос базы данных
В случае если вам просто необходимо перенести рабочую базу данных, то в manegement studio необходимо выполнить запрос:
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'disk:\new_path\new_file_name' )
Где:
- database_name — имя базы данных, которую необходимо перенести;
- logical_name — логическое имя файла;
- disk:\new_path\new_file_name — новый путь к файлу данных.
Такую команду необходимо выполнить для каждого файла данных перемещаемой БД. После чего следует остановить службу MSSQL и переместить файлы данных в новое расположение. При перемещении не забудьте скопировать и права доступа на папку и файлы данных. Затем вновь запустите службы SQL Server.
Перемещение базы данных в случае сбоя
Такая ситуация может возникнуть, если восстановить базу данных в прежнее место невозможно, а без этой базы данных SQL сервер не запускается. Например, как я уже писал в начале, вышедший из строя диск с базой tempdb приведет к остановке MSSQL и невозможности его запуска.
Процедура действий в данном случае почти такая же как и при запланированном переносе. Все операции производим через командную строку cmd с правами администратора. Для начала необходимо запустить SQL сервер в режиме восстановления:
NET START MSSQLSERVER /f /T3608
Затем запустив консольную команду sqlcmd выполнить все те же команды по указанию нового пути к файлам данных для БД. Например для tempdb будут примерно такие команды:
ALTER DATABASE tempdb MODIFY FILE ( NAME = tempdev , FILENAME = 'c:\tempdb\tempdb.mdf' ) ALTER DATABASE tempdb MODIFY FILE ( NAME = templog , FILENAME = 'c:\tempdb\templog.ldf' )
После того как введены все SQL запросы в интерактивном режиме sqlcmd необходимо ввести команду GO, чтобы выполнить этим самые запросы, а затем EXIT, чтобы выйти из интерактивного режима sqlcmd. Папка c:\tempdb (или та куда вы переносите базу данных tempdb) должна быть заранее создана. Если вы восстанавливаете не tempdb, а любую другую БД, то необходимо в эту папку так же положить файлы БД из резервной копии с именами совпадающими с теми, что указаны в SQL запросах.
Теперь можно перезапускать MSSQL сервер в стандартном режиме:
net stop MSSQLSERVER net start MSSQLSERVER
Если используется не экземпляр по умолчанию, а именованый, то необходимо заменить MSSQLSERVER на MSSQL$instancename, где instancename — наименование экземпляра MSSQL.
Если все сделано верно, то службы MSSQL запустятся и продолжат работу в штатном режиме.
Внимание! Нажимая кнопку "Отправить комментарий" вы соглашаетесь с политикой конфиденциальности сайта.