Изменение расположения файлов БД tempdb

Данная статья описывает процесс смены расположения файлов системной базы данных tempdb. Если администратор выполняет установку MS SQL Server по умолчанию, то файлы БД располагаются на системном диске, что является плохой практикой, например для сервера MS SQL SERVER 2019 файлы БД находятся в директории:

'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA'

Чтобы перенести данные файлы необходимо сначала получить информацию о них. Это можно сделать следующей командой
use tempdb
SELECT name,physical_name,state_desc FROM sys.database_files
Для MS SQL Server 2019 результат будет следующим:
name physical_name state_desc
tempdev 'C:\Program Files\Microsoft SQL Server\ MSSQL15.MSSQLSERVER\MSSQL\DATA\tempdb.mdf' ONLINE
templog 'C:\Program Files\Microsoft SQL Server\ MSSQL15.MSSQLSERVER\MSSQL\DATA\templog.ldf' ONLINE
temp2 'C:\Program Files\Microsoft SQL Server\ MSSQL15.MSSQLSERVER\MSSQL\DATA\ tempdb_mssql_2.ndf' ONLINE
temp3 'C:\Program Files\Microsoft SQL Server\ MSSQL15.MSSQLSERVER\MSSQL\DATA\ tempdb_mssql_3.ndf' ONLINE
temp4 'C:\Program Files\Microsoft SQL Server\ MSSQL15.MSSQLSERVER\MSSQL\DATA\ tempdb_mssql_4.ndf' ONLINE
Из результатов данной выборки нам необходимы логические имена фалов БД (NAME) и название файлов. Для примера нам необходимо перенести файлы в папку: D:\SQL\TEMP\. В этом случае скрипты будет иметь вид.
Указываем новое месторасположение для *.mdf и *.ldf файлов
USE master
ALTER DATABASE tempdb MODIFY FILE  (NAME = tempdev, FILENAME = 'D:\SQL\TEMP\tempdb.mdf') 
ALTER DATABASE tempdb MODIFY FILE  (NAME = templog, FILENAME = 'D:\SQL\TEMP\templog.ldf')
В случае если есть *.ndf файлы, то для них так же указываем новое расположение.
ALTER DATABASE tempdb MODIFY FILE  (NAME = temp2, FILENAME = 'D:\SQL\TEMP\tempdb_mssql_2.ndf')
ALTER DATABASE tempdb MODIFY FILE  (NAME = temp3, FILENAME = 'D:\SQL\TEMP\tempdb_mssql_3.ndf')
ALTER DATABASE tempdb MODIFY FILE  (NAME = temp4, FILENAME = 'D:\SQL\TEMP\tempdb_mssql_4.ndf')

После выполнения скриптов необходимо:

  • Остановить MS SQL Server.
  • Перенести файлы в новую директорию.
  • Запустить MS SQL Server.
Если при запуске MS SQL SERVER в сообщениях Windows появляются следующие ошибки:

Операция CREATE FILE вызвала ошибку операционной системы 5(Отказано в доступе.) при попытке открыть либо создать физический файл «D:\SQL\TEMP\tempdb.mdf».

Операция CREATE FILE вызвала ошибку операционной системы 5(Отказано в доступе.) при попытке открыть либо создать физический файл «E:\SQL\TEMP\templog.ldf».

FCB::Open failed: не удалось открыть файл D:\SQL\TEMP\tempdb.mdf для номера файла 1. Ошибка ОС: 5(Отказано в доступе.).

то необходимо дать права на папку пользователю из-под которого запущен MS SQL SERVER