locate
147
09.11.2020

Как в Microsoft SQL Server перенести tempdb на другой диск

Введение

Microsoft SQL Server использует tempdb при выполнении запросов и является служебной базой и хранит в себе временные оьъекты (временные таблицы, процедуры, вычисления, сортировки, объекты и т.д.). Как правило база tempdb всегда сильно нагружена и её ускорение даст нам небольшой прирост в производительности. Одна из рекомендаций — перенос базы tempdb на другой дискю Лучше всего переносить на SSD диск.

Это основная причина для переноса tempdb на другой диск и эта процедура довольно простая.

Расположение файлов базы tempdb по умолчанию

Во время установки MS SQL Server будет предложена Настройка компонента Database Engine, где в вкладке Каталоги данных мы можем выбрать каталог хранения базы данных tempdb. По умоланию база tempdb распологается в следующем каталоге:

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

Выполняем запрос на перенос базы tempdb на другой диск

Поскольку база MS SQL Server постоянно использует базу данных, базу tempdb не получится переместить сделав просто отсоединение и присоединение базы данных. Для перемещения файлов базы tempdb нам необходимо создать запрос и выполнить скрипт под фото, предварительно подставив в него свои пути нового расположения перемещаемой базы.

USE master
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\TEMP_DB\tempdb.mdf')
GO
ALTER DATABASE  tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'D:\TEMP_DB\templog.ldf')
GO

После выполнения запроса вам потребуется Перезапустить Microsoft SQL Server. В процессе перезапуска пользователей не выбросит из 1С 😏 так что жмём смелее! После перезапуска сервер самостоятельно создаст базу tempdb там, где вы указали. Старые файлы необходимо самостоятельно подчистить 🗑.

Перезапуск службы Microsoft SQL Server

Также помимо файлов tempdb.mdf и templog.ldf могут быть ещё несколько штук типа tempdb_mssql_1.ndf. Их таже необходимо перенести в новый каталог:

ALTER DATABASE tempdb MODIFY FILE ( NAME = temp2, FILENAME = 'D:\TEMP_DB\tempdb_mssql_1.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp3, FILENAME = 'D:\TEMP_DB\tempdb_mssql_2.ndf' )

Проверяем новые пути tempdb через запрос

После того, как мы перенесли все файлы в новую директорию и перезапустили службу MS SQL SERVER мы можем проверяем новые пути расположения баз данных tempdb выполнив запрос ниже:

SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');

В ответ мы получим таблицу с новыми путями до файлов баз данных TEMPDB

Новые пути до файлов tempdb

Вот и всё 😎