Системная база данных tempdb служит рабочим пространством для хранения временных объектов, таких как временные таблицы, промежуточные результаты вычислений, временные хранимые процедуры, результаты буферов и сортировки, внутренние объекты, создаваемые компонентой Database Engine и пр. Кроме того, все изменения данных в базах данных, в которых используются транзакции изоляции моментальных снимков с зафиксированным чтением и транзакции изоляции моментальных снимков, а также изменения данных для таких операций, как операции с индексами в сети, множественные активные результирующие наборы (режим MARS) и триггеры AFTER также хранятся в системной базе данных tempdb. Таким образом, данная база данных используется системой довольно активно, и возможно получить значительный прирост производительности путем переноса файлов базы данных tempdb на отдельный дисковый накопитель, более быстрый SSD-диск или даже RAM-диск. О перемещении системной базы данных tempdb в MS SQL Server 2012 (справедливо для более ранних версий) и пойдет речь в данной статье.
1. Указание каталога хранения файлов базы данных tempdb во время установки MS SQL Server 2012
Указать отдельный каталог расположения файлов базы данных tempdb, можно еще на стадии установки MS SQL Server 2012, на странице настройки компоненты Database Engine на вкладке «Каталоги данных» (Data Directories).
Подробнее про установку MS SQL Server 2012 можно прочить здесь.
2. Изменения каталога хранения файлов базы данных tempdb для существующего экземпляра MS SQL Server
Если же имеется уже установленный экземпляр MS SQL Server, то изменить каталог хранения файлов базы данных tempdb не удастся с помощью стандартных средств отсоединение и присоединение базы данных. В этом случае поможет инструкция ALTER DATABASE языка Transact-SQL. Подключимся к экземпляру MS SQL Server, для которого необходимо выполнить изменения, с помощью программы «SQL Server Management Studio».
Просмотрим текущее расположение файлов базы данных tempdb. Для этого в обозревателе объектов (Object Explorer) раскроем вкладки «Базы данных» (Databases) — «Системные базы данных» (System Databases). Кликнем правой кнопкой мыши по базе данных tempdb и в контекстном меню выберем пункт «Свойства» (Properties).
В открывшемся окне свойств перейдем на вкладку «Файлы» (Files), где можно увидеть имена файлов (File Name), логические имена файлов (Logical Name) и путь расположения каждого из файлов (Path).
Для того чтобы изменить путь расположения необходимо выполнить запрос:
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:SQL_Temptempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'E:SQL_Temptemplog.ldf'); GO
Где E:SQL_Temp новый путь расположения файлов базы данных tempdb. Каталоги файла данных базы — файла tempdb.mdf (или файлов, если их несколько) и файла журнала транзакций — tempdb.ldf могут различаться и, соответственно, могут быть изменены независимо. Для того чтобы выполнить запрос, необходимо нажать кнопку на панели задач «Создать запрос» (New Query), в окне нового запроса ввести текст запроса и нажать кнопку «Выполнить» (Execute), расположенную там же, на панели задач.
После чего необходимо перезапустить экземпляр SQL Server. Сделать это можно, здесь же, кликнув правой кнопкой мыши по имени сервера в обозревателе объектов, и выбрав в контекстном меню пункт «Перезапустить» (Restart).
Если теперь вызвать свойства базы данных tempdb, можно увидеть, что путь расположения файлов изменился.
При старте SQL Server база данных tempdb создается каждый раз заново. Поэтому из старого каталога файлы tempdb.mdf и tempdb.ldf необходимо удалить вручную.
3. Универсальный скрипт для продвинутых
------------------------------------------- -- Скрипт перемещает все файлы базы данных tempdb в указанный каталог -- Версия от 27.10.2021 -- Свежие версии скриптов: https://github.com/Tavalik/SQL_TScripts ------------------------------------------- -- НАСТРАИВАЕМЫЕ ПЕРЕМЕННЫЕ -- Новый каталог для базы tempdb DECLARE @Path as NVARCHAR(400) = 'E:SQL_Temp' ------------------------------------------- -- СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ DECLARE @physicalName NVARCHAR(500), @logicalName NVARCHAR(500) DECLARE @SQLString NVARCHAR(400) ------------------------------------------- -- ТЕЛО СКРИПТА USE master; -- Цикл по всем файлам базы данных tempdb DECLARE fnc CURSOR LOCAL FAST_FORWARD FOR ( SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb') ) OPEN fnc; FETCH fnc INTO @logicalName, @physicalName; WHILE @@FETCH_STATUS=0 BEGIN SET @SQLString = ' ALTER DATABASE tempdb MODIFY FILE (NAME = ' + @logicalName + ', FILENAME = ''' + @Path + '' + REVERSE(SUBSTRING(REVERSE(@physicalName), 1, CHARINDEX('', REVERSE(@physicalName))-1)) + ''');' PRINT @SQLString EXEC sp_executesql @SQLString FETCH fnc INTO @logicalName, @physicalName; END; CLOSE fnc; DEALLOCATE fnc;
Больше полезных скриптов здесь: https://github.com/Tavalik/SQL_TScripts
Оглавление
- Расположение файлов базы tempdb по умолчанию
- Выполняем запрос на перенос базы tempdb на другой диск
- Проверяем новые пути tempdb через запрос
Введение
Microsoft SQL Server использует tempdb при выполнении запросов и является служебной базой и хранит в себе временные оьъекты (временные таблицы, процедуры, вычисления, сортировки, объекты и т.д.).
Как правило база tempdb всегда сильно нагружена и её ускорение даст нам небольшой прирост в производительности.
Одна из рекомендаций — перенос базы tempdb на другой дискю Лучше всего переносить на SSD диск.
Это основная причина для переноса tempdb на другой диск и эта процедура довольно простая.
Расположение файлов базы tempdb по умолчанию
Во время установки MS SQL Server будет предложена Настройка компонента Database Engine, где в вкладке Каталоги данных мы можем
выбрать каталог хранения базы данных tempdb. По умоланию база tempdb распологается в следующем каталоге:
C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATA
Выполняем запрос на перенос базы tempdb на другой диск
Поскольку база MS SQL Server постоянно использует базу данных, базу tempdb не получится переместить сделав просто отсоединение и присоединение базы данных.
Для перемещения файлов базы tempdb нам необходимо создать запрос и выполнить скрипт под фото, предварительно подставив в него свои пути нового расположения перемещаемой базы.
USE master GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:TEMP_DBtempdb.mdf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'D:TEMP_DBtemplog.ldf') GO
После выполнения запроса вам потребуется Перезапустить Microsoft SQL Server. В процессе перезапуска пользователей не выбросит из 1С 😏 так что жмём смелее! После перезапуска сервер самостоятельно создаст базу tempdb там, где вы указали. Старые файлы необходимо самостоятельно
подчистить 🗑.
Также помимо файлов tempdb.mdf и templog.ldf могут быть ещё несколько штук типа tempdb_mssql_1.ndf. Их таже необходимо перенести в новый каталог:
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp2, FILENAME = 'D:TEMP_DBtempdb_mssql_1.ndf' ) ALTER DATABASE tempdb MODIFY FILE ( NAME = temp3, FILENAME = 'D:TEMP_DBtempdb_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
Убедитесь, что у учётной записи, из-под которой запущена служба SQL Server Database Engine, есть права на чтение и модификацию этой директории. Лучше даже выдать полные права на NT SERVICEMSSQLSERVER,
либо NT SERVICEMSSQL$ имя_экземпляра
если инстанс именованный.
Далее открываем SQL Server Management Studio и выполняем следующую команду:
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Результатом будет что-то такое:
Нам нужно содержение колонки name, это логические имена файлов на которые разбита база.
Для каждого файла нужно выполнить следующий код:
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_pathos_file_name' )
Где
database_name — имя базы, в нашем случае – tempdb
logical_name — логическое имя файла базы, в случае моего примера это tempdev, templog, temp2, temp3 и т.д.
new_pathos_file_name — полный путь и физическое название файла, к примеру: T:TEMPDBtempdb.mdf
Вышеупомянутый запрос, который вернул логические имена файлов, также возвращает колонку
CurrentLocation По сути, Вам просто нужно скопировать её содержимое и поменять первую часть строки с текущим размещением файла на новое.
Для моего примера код для перемещения файлов будет следующий:
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = tempdev, FILENAME = T:TEMPDBtempdb.mdf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = templog, FILENAME = T:TEMPDBtemplog.ldf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp2, FILENAME = T:TEMPDBtempdb_mssql_2.ndf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp3, FILENAME = T:TEMPDBtempdb_mssql_3.ndf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp4, FILENAME = T:TEMPDBtempdb_mssql_4.ndf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp5, FILENAME = T:TEMPDBtempdb_mssql_5.ndf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp6, FILENAME = T:TEMPDBtempdb_mssql_6.ndf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp7, FILENAME = T:TEMPDBtempdb_mssql_7.ndf ) ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp8, FILENAME = T:TEMPDBtempdb_mssql_8.ndf )
Сгененрировал я его седующим путём (перед выполнением нажмите CTRL + T для возврата результата в виде текста):
SELECT 'ALTER DATABASE ''tempdb'' MODIFY FILE ( NAME = '+[name]+', FILENAME = '+[physical_name]+' )' FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Осталось только перезапустить службу SQL Server Database Engine. Сделать это можно в любое удобное Вам время. Новые файлы начнут использоваться только после перезапуска службы.
Правильность настроек можно определить с помощью того же запроса выше:
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Запрос должен вернуть новые пути к файлам. Хотя да, до перезапуска службы они будут неактуальны.
Важные моменты:
- Файлы не обязательно переносить с места на место, система сама создаст их во время старта службы.
- Если файлы большие
– желательно дать системной учётной записи право на Perform Volume Maintenance Tasks - Пока не будет создан основной файл и файл лога — служба полностью не стартует, СУБД будет не доступна.
- Рекомендую для проверки не перезапускать службу, а остановить. Далее переименовать старую директорию где была tempdb, и только потом запускать службу. Так Вы точно поймёте, что всё работает верно и всегда сможете откатиться
обратно.
Частые ошибки, которые с которыми ко мне обращаются за помощью:
- Забыли выдать доступ на новую директорию
- Нашли скрипт в интернете на перенос только основного файла данных и журнала транзакций, бездумно запустили
- Поменяли настройки, но не перезапустили службу по ряду причин. Другой администратор увидел пустую папку и удалил её. Когда службу перезапустили, она не стартовала, так как не было где разместить tempdb
В любом случае, если что-то не так – посмотрите лог ошибок. Ну и пишите. Уверен, что всё пройдёт удачно, операция не сложная.
Временная база данных (tempdb) в SQL Server — это системная база данных, доступная всем пользователям, подключенным к экземпляру SQL Server. В tempdb хранятся как временные пользовательские объекты, так и внутренние объекты, создаваемые ядром СУБД.
Tempdb пользуется особой популярностью, поэтому для нее настоятельно рекомендуется размещать файлы данных и журнала транзакций на специально выделенных дисках, отдельно от операционной системы и других баз данных. И желательно на максимально быстром хранилище с низким временем задержки, типа SSD NVMe или Intel Optane.
Также для ускорения ввода-вывода рекомендуется создавать несколько файлов данных в зависимости от количества логических процессоров, выделенных для сервера базы данных (Database Engine). Если число логических процессоров меньше восьми, рекомендуется создать файл данных для каждого логического процессора, если равно или больше восьми, то используйте восемь файлов данных.
В идеале размещение баз лучше планировать заранее, но, к сожалению, это не всегда возможно. И может возникнуть ситуация, когда требуется переместить файлы базы на уже работающем сервере. Для tempdb эта процедура несложная, рассмотрим ее по пунктам.
Первым делом выделяем новый диск H, на котором будут находиться файлы TempDB. Размещать файлы базы в корне диска не рекомендуется, даже если диск целиком выделен под их хранение, поэтому создаем отдельную директорию, назовем ее TempDB. На эту директорию необходимо выдать права на чтение и изменение учетной записи, от имени которой работает служба MS SQL (SQL Server Database Engine).
Теперь нам надо выяснить текущее расположение файлов tempdb. Сделать это можно из графической оснастки, открыв в свойствах базы вкладку Files
либо с помощью вот такого sql-запроса:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
В поле Name мы получаем логическое имя файла, а в поле CurrentLocation путь к файлу. Как видите, в нашем примере имеется 8 файлов базы и один файл журнала транзакций.
Для каждого файла нужно выполнить следующий код:
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_pathfile_name' )
Где:
• database_name — имя базы (в нашем случае tempdb);
• logical_name — логическое имя файла базы;
• new_pathfile_name — новый путь и физическое имя файла.
Можно немного облегчить себе жизнь и сгенерировать код с помощью запроса (перед выполнением нажмите CTRL + T для возврата результата в виде текста):
SELECT 'ALTER DATABASE ''tempdb'' MODIFY FILE ( NAME = '+[name]+', FILENAME = '+[physical_name]+' )'
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
В полученном запросе остается только поменять старый путь на новый. В результате получим:
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = tempdev, FILENAME = H:TEMPDBtempdb.mdf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = templog, FILENAME = H:TEMPDBtemplog.ldf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp2, FILENAME = H:TEMPDBtempdb_mssql_2.ndf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp3, FILENAME = H:TEMPDBtempdb_mssql_3.ndf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp4, FILENAME = H:TEMPDBtempdb_mssql_4.ndf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp5, FILENAME = H:TEMPDBtempdb_mssql_5.ndf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp6, FILENAME = H:TEMPDBtempdb_mssql_6.ndf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp7, FILENAME = H:TEMPDBtempdb_mssql_7.ndf )
ALTER DATABASE 'tempdb' MODIFY FILE ( NAME = temp8, FILENAME = H:TEMPDBtempdb_mssql_8.ndf )
Выполняем полученный запрос.
Рестартуем службу MS SQL (SQL Server Database Engine). Проверяем в настройках tempdb расположение файлов.
И затем идем в новую папку и проверяем, что в ней появились файлы.
На этом процесс переноса завершен и можно удалить файлы из старого расположения. В завершение некоторые важные моменты:
• Tempdb создается заново всякий раз, когда стартует служба SQL. Поэтому файлы не требуется переносить с места на место, система сама создаст их во время старта службы;
• Пока не будет создан основной файл и файл лога — служба полностью не стартует и СУБД будет недоступна;
• Для подстраховки можно не перезапускать службу MS SQL, а полностью остановить ее, переименовать старую директорию с tempdb, и только потом запускать службу. Так будет сразу видно, что всё работает, а в случае проблем можно быстро откатить изменения;
• Если файлы большие – желательно дать учётной записи SQL право Perform Volume Maintenance Tasks (Выполнение задач по обслуживанию томов).
There are times when as a DBA you find the need to move TempDB Data and Log Files to a new Drive. This article explains all the steps you need to follow to move TempDB files.
Introduction
This article explains the steps you must follow to move TempDB database from one drive to another in SQL Server. However, for the changes to come into effect you must restart SQL Server Service.
Overview of Steps to move TempDB data and log files to new location are:-
- Identify the location of TempDB Data and Log Files
- Change the location of TempDB Data and Log files using ALTER DATABASE
- Stop and Restart SQL Server Service
- Verify the File Change
- Delete old tempdb.mdf and templog.ldf files
This article outlines the step to Change the Location of TempDB Data and Log files in SQL Server.
Move TempDB / Change TempDB Location / Move TempDB to Another Drive / Move TempDB to New Drive / How to Move SQL Server TempDB Files
Identify the location of TempDB Data and Log Files
In the New Query window of SQL Server Management Studio, execute the below-mentioned script to identify the location of TempDB data and log file.
Use master
GO
SELECT
name AS [LogicalName]
,physical_name AS [Location]
,state_desc AS [Status]
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO
In a Failover Cluster Instance to Move TempDB read, How to Configure TempDB on Local Disk in SQL Server 2012/2014 Failover Cluster to Improve Performance
Once you have identified the location of TempDB files, then the next step will be to create the respective folders on the new drive where you would like to store the TempDB data and log file. However, you need to make sure that the new location where the TempDB files are stored is accessible by SQL Server. i.e., you need to ensure that the Account under which SQL Server Service is running has read and write permissions on the folder where the files are stored.
Top Trending SQL Server DBA and Developer Articles and Tips
- SQL Delete Duplicate Rows from a SQL Table in SQL Server
- New to SQL Server? Get Started and Learn Transact-SQL
- SQL Server Tutorial: T-SQL Enhancements in SQL Server
- SQL Server Tutorial: Database Backups with Examples
- How to Configure Contained Databases Feature, Create Contained Databases, Create Access to Contained Databases, and Connect to Contained Databases.
- How to Backup, Restore, Synchronize, Attach, Detach, Automate Backup, and Perform DBCC Check of Analysis Services Databases.
- How to Fix PowerShell Execution Policy Error in Windows Server
- How to Repair Suspect Database in SQL Server
- How to Enable Dedicated Administrator Connection in SQL Server
- How to Configuring Database Instant File Initialization Feature of SQL Server
- How to Backup and Restore Resource Database in SQL Server
- How to Start SQL Server in Single User Mode?
- How to Start SQL Server with Minimal Configuration
- How to Detect Virtual Log Files in SQL Server Transaction Log File
- How to Identify the Location of Resource Database in SQL Server
- How to Disable an Index in SQL Server
- How to Monitor Transaction Log File Usage in SQL Server
- How to Connect to SQL Server When all System Administrators are Locked Out
- FORMAT SQL Server Dates Using FORMAT Function in SQL Server
Change the location of TempDB Data and Log files using ALTER DATABASE
Execute the below ALTER DATABASE command to change the location of TempDB Data and Log file in SQL Server.
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'T:MSSQLDATAtempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'T:MSSQLDATAtemplog.ldf');
GO
Once the above script has executed successfully you will receive a message to restart SQL Server Service for the changes to come into effect.
The file "tempdev" has been modified in the system catalog. The new path will be used the next time the database is started.
The file "templog" has been modified in the system catalog. The new path will be used the next time the database is started.
Stop and Restart SQL Server Service
Stop and restart the instance of SQL Server for the changes to come into effect.
Verify the File Change
Execute the below TSQL to verify whether TempDB Data and Log files are residing in the new location.
Use master
GO
SELECT
name AS [LogicalName]
,physical_name AS [Location]
,state_desc AS [Status]
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO
Delete old tempdb.mdf and templog.ldf files
The final step will be to delete the tempdb.mdf & templog.ldf files from the original location.
Important Note: SQL Server doesn’t support moving TempDB Database using backup/restore and by using detach database methods.
Error Message Received when you try Backup and Restore Method
Msg 3147, Level 16, State 3, Line 1
Backup and restore operations are not allowed on database tempdb.
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
Error Message Received when you try Detach Method
Msg 7940, Level 16, State 1, Line 1
System databases master, model, msdb, and tempdb cannot be detached.
Conclusion
This article explains the steps you must follow to move TempDB database from one drive to another in SQL Server.
Recommendation: Top 10 Trending SQL Server Tips for DBAs and Developer.
Chetna Bhalla
LESS ME MORE WE
Chetna Bhalla, the founder of MyTechMantra.com, believes that by sharing knowledge and building communities, we can make this world a better place to live in. Chetna is a Graduate in Social Sciences and a Masters in Human Resources and International Business. She is an alumnus of Vignana Jyothi Institute of Management, Hyderabad, India. After graduation, Chetna founded this website, which has since then become quite a favorite in the tech world. Her vision is to make this website the favorite place for seeking information on Databases and other Information Technology areas. She believes that companies which can organize and deploy their data to frame strategies are going to have a competitive edge over others. Her interest areas include Microsoft SQL Server and overall Database Management. Apart from her work, Chetna enjoys spending time with her friends, painting, gardening, playing the violin, and spending time with her son.
Though it’s not something that you should have to do often, occasionally you may find that you need to move your tempdb to a new drive. This scenario occurred recently when, in the process of building out a virtual server, only 2 additional drives were created for me. Since it is best practice to put your data, log and tempdb on separate drives, I was left with having to temporarily put the tempdb on the E: drive when initially configuring the new installation of SQL Server.
Eventually the new drive, we’ll call it R:, was added to the server and I now needed to move tempdb to this drive.
In this case I already knew where my tempdb was located but this may not always be the case. The first step you should take when moving tempdb to a new drive is to verify it’s current location. The following script can be used to do just that.
USE [master] SELECT name AS 'Name', physical_name AS 'Physical Location', state_desc AS 'Status' FROM sys.master_files WHERE database_id = DB_ID('tempdb')
This script will return the name, physical location and current status of the tempdb data and log files. The results should look something like this:
Now that I have confirmed the location of the tempdb data and log files my next step will be to move them to the new location. Before moving them I’ll want to make sure I have created any necessary folders on the new drive. In the example below I am putting them in the R:SQL folder so I would need to go create a folder named SQL on the R: drive.
The script below can be used to change the location of both the tempdb data and tempdb log files. You can modify the FILENAME
section to correspond to the location of your choosing.
USE [master] GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'R:SQLtempdb.mdf') GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'R:SQLtemplog.ldf') GO
The final step is to restart the instance of SQL Server. You can do this by either right-clicking on the SQL Server name in the Object Explorer and selecting to Stop, then Start the service or by opening up SQL Server Configuration Manager and doing it from there. I prefer using SQL Server Configuration Manager for this as I’ve had issues in dealing with services when remotely connected to SQL server through Management Studio. Though rare, it’s happened enough to encourage me to always log directly into the server to start/stop services.
Once the service is back up and running, you can re-run the first script to confirm the new location of your TempDB data and log files.
The above steps can also be used to move the msdb and model system databases. You’ll just need to modify the ALTER DATABASE
, NAME
and FILENAME
values to point to the applicable database. If you’re wanting to move the master
database it requires a slightly different approach. To learn more about this you can reference my post on Moving The master System Database To A New Location In SQL Server.