Standard Verzeichnisse im SQL Server

by Axel Schulze 29. Juli 2010 16:01

Der SQL Server besitzt in seiner Konfiguration Standard-Verzeichnisse für die Daten-Dateien, Log-Dateien und auch für Backups. Werden diese in einem Skript benötigt, können diese folgendermaßen ausgelesen werden:

-- SQL Data Root
DECLARE @SQLDataRoot nvarchar(512) 
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
,N'Software\Microsoft\MSSQLServer\Setup'
,N'SQLDataRoot',@SQLDataRoot OUTPUT

SELECT
@SQLDataRoot SQLDataRoot -- Standard-Datenverzeichnis DECLARE @DefaultData nvarchar(512) exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
,N'Software\Microsoft\MSSQLServer\MSSQLServer'
,N'DefaultData',@DefaultData OUTPUT
select
@DefaultData DefaultData -- Standard-Logfile-Verzeichnis DECLARE @DefaultLog nvarchar(512) exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
,N'Software\Microsoft\MSSQLServer\MSSQLServer',N'DefaultLog'
,@DefaultLog OUTPUT
select
@DefaultLog DefaultLog -- Standard Backup-Verzeichnis DECLARE @DefaultBackup nvarchar(512) exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
,N'Software\Microsoft\MSSQLServer\MSSQLServer',N'BackupDirectory'
,@DefaultBackup OUTPUT
select
@DefaultBackup DefaultBackup

Sollte eines der Verzeichnisse nicht explizit gesetzt sein (sondern in der Standardeinstellung, wie bei Installation belassen), dann wird folgende Meldung zurückgegeben:

RegQueryValueEx() returned error 2, 'Das System kann die angegebene Datei nicht finden.'
Msg 22001, Level 1, State 1

Die Standardwerte für nicht explizit festgelegte Verzeichnisse sind:

  • DefaultData => SQLDataRoot + “\DATA”
  • DefaultLog => SQLDataRoot + “\LOG”
  • DefaultBackup => SQLDataRoot + “\Backup”

Nicht nur auslesen, auch Setzen kann man diese Werte per Skript (außer das SQLDataRoot):

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE'
, N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'C:\data' GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE'
, N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'C:\Log' GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE'
, N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', REG_SZ, N'C:\Backup'

Tags:

SQLServer

Kommentare sind geschlossen

Herzlich Willkommen

Herzlich Willkommen im SQL Server & ASP .NET Blog. Hier findet Ihr allerlei Nützliches und Hilfreiches...