tempdb 是 SQL Server 的全域暫存資料庫,支援暫存表、表變數、游標、工作表、版本存放區等。將 tempdb 移至獨立磁碟/陣列可顯著降低 I/O 爭用,提升整體效能。本文說明標準離線移動流程。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
記錄回傳的 tempdev (資料檔) 與 templog (記錄檔) 實體路徑。
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'F:\tempdb\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\tempdb\templog.ldf'); GO
關鍵點:此步驟僅更新系統目錄元資料,實體檔案不會移動,服務重啟前舊路徑仍生效。
tempdb.mdf 與 templog.ldf 從舊路徑剪貼 (移動) 至新路徑 (如 F:\tempdb\)physical_name 已更新為新路徑tempdb 資料檔 (同大小、同自動成長),減少 SGAM/PFS 頁面爭用。Perform volume maintenance tasks (SE_MANAGE_VOLUME_NAME) 權利,加速資料檔擴充。tempdb 放置於專用 NVMe/SSD/RAID 10 磁碟,與使用者資料庫、記錄檔、備份檔分離。❌ 直接在 SSMS 圖形介面修改路徑後以為完成 — 必須手動移動檔案並重啟服務才生效。
❌ 使用
DETACH/ATTACH—tempdb不支援分離/附加,僅能用ALTER DATABASE ... MODIFY FILE。