| 層級 | 生效時機 | 適用場景 |
|---|---|---|
| 單一資料庫檔案路徑 | 下次服務重啟 | 移動特定資料庫至新磁碟 |
| 預設資料檔路徑 | 立即 | 新建資料庫自動導向新磁碟 |
| 預設記錄檔路徑 | 立即 | 新建資料庫記錄檔自動導向新磁碟 |
SELECT
database_id,
name,
physical_name AS CurrentLocation,
state_desc,
size * 8 / 1024.0 AS Size_MB
FROM sys.master_files
WHERE database_id = DB_ID(N'資料庫名');
-- 範例:將 testDb 移至 G:\SQL_DATA\testDb\ ALTER DATABASE testDb MODIFY FILE (NAME = testDb, FILENAME = 'G:\SQL_DATA\testDb\testDb.mdf'); ALTER DATABASE testDb MODIFY FILE (NAME = testDb_log, FILENAME = 'G:\SQL_DATA\testDb\testDb_log.ldf');
ALTER DATABASE ... MODIFY FILE。ALTER DATABASE testDb SET OFFLINE WITH ROLLBACK IMMEDIATE;.mdf/.ldf 實體移動至新路徑。ALTER DATABASE testDb SET ONLINE;注意:
MODIFY FILE僅更新系統目錄中的路徑中繼資料,**不會移動實體檔案**,必須手動移動檔案並重啟資料庫(或離線/上線)生效。
-- 修改預設資料檔路徑
EXEC xp_instance_regwrite
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'Software\Microsoft\MSSQLServer\MSSQLServer',
@value_name = N'DefaultData',
@type = N'REG_SZ',
@value = N'E:\MSSQL_MDF\Data';
-- 修改預設記錄檔路徑
EXEC master..xp_instance_regwrite
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'Software\Microsoft\MSSQLServer\MSSQLServer',
@value_name = N'DefaultLog',
@type = N'REG_SZ',
@value = N'E:\MSSQL_MDF\Log';
執行後,**新建資料庫**預設會將檔案放在新路徑,**現有資料庫不受影響**。
FILE_STREAM 目錄一致性。tempdb 路徑需重啟 SQL Server 服務(而非單一資料庫)。log_reuse_wait_desc。 SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID(N'資料庫名');