TempDBのデータベースファイルを別のディスクドライブに移動する

チップ・ハムリン
質問: TempDBの移動手順
SQL ServerでTempDBをSSDドライブに移すとパフォーマンスが向上するという話を聞きました。 どのような手順でTempDBを移動するのでしょうか?

TempDBを移動する手順を紹介します。

手順

TempDBのファイル調査

はじめに tempdb のファイルを調べます。次の SQL を実行します。

SELECT 
    DB_NAME(database_id) AS db,
    type_desc,
    physical_name,
    LEFT(physical_name, 2) AS drive
FROM sys.master_files
WHERE database_id IN (
    DB_ID('tempdb')
)
ORDER BY drive, db;


以下のような結果が表示されます。

dbtype_descphysical_namedrive
tempdbROWSD:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf D:
tempdbLOGD:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf D:
tempdbROWSD:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_2.ndf D:
tempdbROWSD:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_3.ndf D:
tempdbROWSD:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_4.ndf D:

TempDBの変更

見つかったTempDBのファイルに対して、以下のALTER DATABSE を実行します。
次のSQLを実行します。

USE [master]
GO

-- 現在の TempDB ファイル構成確認
SELECT name, physical_name 
FROM sys.master_files 
WHERE database_id = DB_ID('tempdb');

-- ファイルパス変更(次回起動時に有効)
ALTER DATABASE tempdb 
    MODIFY FILE (NAME = tempdev, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf');

ALTER DATABASE tempdb 
    MODIFY FILE (NAME = templog, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf');

ALTER DATABASE tempdb 
    MODIFY FILE (NAME = temp2, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_2.ndf');

ALTER DATABASE tempdb 
    MODIFY FILE (NAME = temp3, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_3.ndf');

ALTER DATABASE tempdb 
    MODIFY FILE (NAME = temp4, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_4.ndf');

変更の確認

再度以下のSQLを実行して、ファイルパスが変化していることを確認します。

SELECT 
    DB_NAME(database_id) AS db,
    type_desc,
    physical_name,
    LEFT(physical_name, 2) AS drive
FROM sys.master_files
WHERE database_id IN (
    DB_ID('tempdb')
)
ORDER BY drive, db;


以下のような結果が表示されます。

dbtype_descphysical_namedrive
tempdbROWSE:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf E:
tempdbLOGE:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf E:
tempdbROWSE:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_2.ndf E:
tempdbROWSE:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_3.ndf E:
tempdbROWSE:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_4.ndf E:


以上でTempDBの移動は完了です。

AuthorPortraitAlt
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
作成日: 2026-05-03