首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

修改 SQL Server 2005/2008 使用者資料庫與備份預設路徑 (登錄法)

     編輯:關於SqlServer

SQL Server 安裝後,使用者資料庫資料檔 (.mdf)、記錄檔 (.ldf) 及備份檔的預設路徑寫在登錄機碼中。本文提供 SQL Server 2005 與 2008 (含具名實例) 查詢與修改這三個路徑的現成 T-SQL 腳本,透過 xp_regread/xp_regwrite 直接操作登錄,免用管理工具點點點。

SQL Server 2005 (預設實例 MSSQL.1)

查詢現有路徑

-- 資料檔預設路徑
DECLARE @DefaultData VARCHAR(100);
EXEC master..xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
    @value_name = 'DefaultData',
    @DefaultData = @DefaultData OUTPUT;
SELECT @DefaultData AS DefaultDataPath;

-- 記錄檔預設路徑
DECLARE @DefaultLog VARCHAR(100);
EXEC master..xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
    @value_name = 'DefaultLog',
    @DefaultLog = @DefaultLog OUTPUT;
SELECT @DefaultLog AS DefaultLogPath;

-- 備份檔預設路徑
DECLARE @BackupDirectory VARCHAR(100);
EXEC master..xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
    @value_name = 'BackupDirectory',
    @BackupDirectory = @BackupDirectory OUTPUT;
SELECT @BackupDirectory AS BackupDirectoryPath;

修改路徑 (範例改至 D:\SQL2005\Data、Log、DBBak)

-- 修改資料檔路徑
EXEC master..xp_regwrite
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
    @value_name = 'DefaultData',
    @type = 'REG_SZ',
    @value = 'D:\SQL2005\Data';

-- 修改記錄檔路徑
EXEC master..xp_regwrite
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
    @value_name = 'DefaultLog',
    @type = 'REG_SZ',
    @value = 'D:\SQL2005\Log';

-- 修改備份路徑
EXEC master..xp_regwrite
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
    @value_name = 'BackupDirectory',
    @type = 'REG_SZ',
    @value = 'D:\SQL2005\DBBak';

SQL Server 2008 (具名實例 MSSQL10.SQL2008)

登錄路徑關鍵差異:MSSQL10.<InstanceName>。

查詢

DECLARE @DefaultData VARCHAR(100);
EXEC master..xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL10.SQL2008\MSSQLServer',
    @value_name = 'DefaultData',
    @DefaultData = @DefaultData OUTPUT;
SELECT @DefaultData;
-- DefaultLog、BackupDirectory 同理,只換 @value_name

修改 (範例改至 D:\SQL2008\Data、Log、DBBak)

EXEC master..xp_regwrite
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'Software\Microsoft\Microsoft SQL Server\MSSQL10.SQL2008\MSSQLServer',
    @value_name = 'DefaultData',
    @type = 'REG_SZ',
    @value = 'D:\SQL2008\Data';
-- DefaultLog、BackupDirectory 同理

注意事項

  • 實例名稱不同,登錄路徑不同:請先在註冊表編輯器 regedit 確認實際機碼路徑 (如 MSSQL.1、MSSQL10.MSSQLSERVER、MSSQL10.SQL2008)。
  • xp_regread/write 需 sysadmin 固定伺服器角色權限。
  • 修改後 需重啟 SQL Server 服務 新路徑才生效 (建立新資料庫/備份時才會讀取)。
  • 目標資料夾需存在,且 SQL Server 服務帳戶具備讀寫權限。
  • SQL Server 2012+ 建議用 ServerProperty('InstanceDefaultDataPath') 等屬性或 SSMS 伺服器屬性介面修改,不再建議直接改登錄。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved