SQL Server 安裝時指定的資料/記錄/備份預設路徑,實際儲存在 Windows 登錄機碼中。透過 xp_regread 讀取、xp_regwrite 修改,即可在不重裝執行個體的情況下調整預設路徑,新建資料庫時即自動套用新位置。
-- 資料檔預設路徑
DECLARE @DefaultData VARCHAR(100);
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer',
@value_name = 'DefaultData',
@DefaultData = @DefaultData OUTPUT;
SELECT @DefaultData AS [資料檔預設路徑];
-- 記錄檔預設路徑
DECLARE @DefaultLog VARCHAR(100);
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer',
@value_name = 'DefaultLog',
@DefaultLog = @DefaultLog OUTPUT;
SELECT @DefaultLog AS [記錄檔預設路徑];
-- 備份預設路徑
DECLARE @BackupDirectory VARCHAR(100);
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer',
@value_name = 'BackupDirectory',
@BackupDirectory = @BackupDirectory OUTPUT;
SELECT @BackupDirectory AS [備份預設路徑];
-- 修改資料檔預設路徑
EXEC master..xp_regwrite
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer',
@value_name = 'DefaultData',
@type = 'REG_SZ',
@value = 'D:\SQLData\Data'; -- 修改為目標路徑
-- 修改記錄檔預設路徑
EXEC master..xp_regwrite
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer',
@value_name = 'DefaultLog',
@type = 'REG_SZ',
@value = 'D:\SQLData\Log';
-- 修改備份預設路徑
EXEC master..xp_regwrite
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer',
@value_name = 'BackupDirectory',
@type = 'REG_SZ',
@value = 'E:\SQLBackup';
MSSQL10_50.MSSQLSERVER 為 SQL Server 2008 R2 預設執行個體;具名執行個體或其他版本請至註冊表確認實際機碼名稱(如 MSSQL13.MSSQLSERVER 為 2016)。CREATE DATABASE 未指定檔案路徑時即套用新預設值;既有資料庫不受影響。BACKUP DATABASE ... TO DISK = '...' 未指定完整路徑時的預設資料夾,維護計畫、Agent 作業若寫死路徑則不受影響。xp_regwrite 需 sysadmin 固定伺服器角色,生產環境建議納入變更管理流程並備份登錄庫。在 SSMS 物件總管 → 伺服器右鍵 → 「屬性」 → 「資料庫設定」 → 「資料庫預設位置」同樣可視化修改,本質同樣寫入上述登錄機碼。