itrain-home  
home
 Aktuelle Seite:  knowhow sql tsql xp xp_reg.asp 
 



 

Erweiterte gespeicherte Prozeduren

Zugriff auf die Registrierungsdatenbank (Registry)

Für den Zugriff auf die Registry finden Sie in der master-Datenbank eine Reihe von erweiterten gespeicherten Prozeduren (Extended Stored Procedures) mit denen Werte und Schlüssel in der Regsitry gelesen, geschrieben und gelöscht werden können.

Achtung!Diese Prozeduren sind nicht dokumentiert und bei der Verwendung ist äußerste Vorsicht angebracht. Testen Sie alle Aufrufe in jedem Fall zunächst auf einem Testsystem. Fehlerhafte Aufrufe können das System zerstören.

Auf dieser Seite finden Sie Informationen zur Lösung der folgenden Aufgaben:

Zu allen Themen finden auch jeweils ein kleines Beispiel. Das Transact-SQL Script "regReadVorwahlen" zeigt anhand eines etwas größeren Beispiels (Einlesen der internationalen Ländervorwahlen aus der Registrierungsdatenbank) wie diese Prozeduren eingesetzt werden können.

Übrigens: Sie können für den Zugriff auf die Registry auch das WScript.Shell Objekt des Windows Scripting Host verwenden. Beispielcode dazu finden Sie im Bereich Transact-SQL und COM.

Lesen eines Wertes aus der Registrierungsdatenbank

Mit Hilfe der gespeicherten Prozedur xp_regread kann ein Wert aus der Registry gelesen werden.

Syntax:

EXEC master.dbo.xp_regread hive, schlüssel, wert [, ergebnis OUTPUT]

Ergebnis:

Wurde der Ausgabeparameter angegeben, so enthält er nach dem Aufruf den gelesenen Wert. Wird kein Ausgabeparameter angegeben, so wird ein zweispaltiges Resultset zurückgegeben. Die erste Spalte enthält den Namen des Werts, die zweite Spalte den Inhalt.

Parameter:

hiveEiner der Registry-Hives (z.B. HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT oder HKEY_CURRENT_USER)
schlüsselDer Name des gesuchten Schlüssels. Die einzelnen Ebenen werden durch Backslash getrennt.
wertDer Name des gesuchten Werts.
ergebnis OUTPUTErgebnisfeld. Achten Sie darauf, dass die Variable den passenden Datentyp verwendet.

Einige nützliche Beispiele

Auslesen des Standardwerts eines Schlüssels

DECLARE @dateityp varchar(255)  
 EXECUTE master.dbo.xp_regread   
  'HKEY_CLASSES_ROOT',   
  '.txt',   
  NULL,   -- (Standard)  
  @dateityp OUTPUT  
 PRINT @dateityp

Auslesen des Daten- und Logverzeichnisses

DECLARE @datapath varchar(255)   
 DECLARE @logpath varchar(255)   
 EXEC master..xp_regread   
  'HKEY_LOCAL_MACHINE',   
  'Software\Microsoft\MSSQLServer\MSSQLServer',   
  'DefaultData',   
  @datapath OUTPUT   
   
 EXEC master..xp_regread   
  'HKEY_LOCAL_MACHINE',   
  'Software\Microsoft\MSSQLServer\MSSQLServer',   
  'DefaultLog',   
  @logpath OUTPUT   
   
 PRINT @datapath   
 PRINT @logpath  
   
 

Ermitteln des Rechnernamens

DECLARE @theComputer varchar(50)   
 EXEC master.dbo.xp_regread   
   'HKEY_Local_Machine',   
   'System\CurrentControlSet\Control\ComputerName\ActiveComputerName',   
   'ComputerName',  
   @theComputer OUTPUT   
 PRINT @theComputer  
   
 -- Für den SQL Server 2000 kann hier besser die folgende Prozedur verwendet werden:  
   
 DECLARE @theComputer varchar(50)   
 EXEC xp_getnetname @theComputer OUTPUT   
 PRINT @thecomputer  
   
 

Auflisten aller Unterschlüssel

Die Prozedur xp_regenumkeys ermöglicht das Auflisten aller Unterschlüssel eines Registry-Schlüssels

Syntax:

EXEC master.dbo.xp_regenumkeys hive, schlüssel

Ergebnis:

Ein einspaltiges Resultset mit den Namen aller gefundenen Unterschlüssel.

Parameter:

hiveEiner der Registry-Hives (z.B. HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT oder HKEY_CURRENT_USER)
schlüsselDer Name des gesuchten Schlüssels. Die einzelnen Ebenen werden durch Backslash getrennt.

Beispiel: Auflisten aller Unterschlüssel von HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers

EXECUTE master.dbo.xp_regenumkeys 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\MSSQLServer\Providers'

Auflisten aller Werte eines Unterschlüssels

Verwenden Sie die Prozedur xp_regenumvalues um alle Werte eines Unterschlüssels zu lesen.

Syntax:

EXEC master.dbo.xp_regenumvalues hive, schlüssel

Ergebnis:

Ein (oder mehrere) zweispaltige Resultsets mit den Namen und Inhalten aller gefundenen Werte.

Parameter:

hiveEiner der Registry-Hives (z.B. HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT oder HKEY_CURRENT_USER)
schlüsselDer Name des Unterschlüssels. Die einzelnen Ebenen werden durch Backslash getrennt.

Beispiel: Auflisten aller Werte des Schlüssels von HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\Parameters

EXECUTE master.dbo.xp_regenumvalues   
     'HKEY_LOCAL_MACHINE',   
     'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\Parameters'  
 

Schreiben eines Wertes in die Registry

Die Prozedur xp_regwrite schreibt einen Wert in die Regstrierungsdatenbank.

Achtung!

Vorsicht! Diese Prozedur überschreibt den Wert ohne weitere Rückfrage!
Testen Sie diese Prozedur nur auf Testsystemen und machen Sie ein Backup der Registrierungsdatenbank.

Syntax:

EXEC master.dbo.xp_regwrite hive, schlüssel, wert, datentyp, inhalt

Ergebnis:

Dieser Aufruf liefert kein Ergebnis zurück.

Parameter:

hiveEiner der Registry-Hives (z.B. HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT oder HKEY_CURRENT_USER)
schlüsselDer Name des Unterschlüssels. Die einzelnen Ebenen werden durch Backslash getrennt.
wertDer Name des Werts, der geschrieben werden soll.
datentypDer Datentyp des Werts. Zum Beispiel REG_SZ, REG_DWORD, REG_BINARY
inhaltDer Inhalt des Wertes, der geschrieben werden soll.

Beispiel: Schreiben des Werts "A_Test" mit dem Inhalt 'Hallo von xp_regwrite' unter den Schlüssel HKEY_LOCAL_MACHINE_Software

EXECUTE master.dbo.xp_regwrite   
         'HKEY_LOCAL_MACHINE',   -- hive  
         'Software',             -- Unterschlüssel  
         'A_Test',               -- Names des Werts  
         'REG_SZ',               -- Datentyp  
         'Hallo von xp_regwrite' -- Wert  
   
 
Ergebnis des Beispielaufrufs im Registrierungseditior

Löschen eines Wertes aus der Registry

Mit Hilfe der Prozedur xp_regdeletevalue kann ein einzelner Schlüssel aus der Registrierungsdatenbank gelöscht werden.

Achtung!

Vorsicht! Diese Prozedur löscht den Wert ohne weitere Rückfrage aus der Registrierungsdatenbank!
Testen Sie diese Prozedur nur auf Testsystemen und machen Sie ein Backup der Registrierungsdatenbank.

Syntax:

EXEC master.dbo.xp_regdeletevalue hive, schlüssel, wert

Ergebnis:

Dieser Aufruf liefert kein Ergebnis zurück. Wird der Wert nicht gefunden, so erhalten Sie die Fehlermeldung:
Meldung 22001, Ebene 1, Status 22001 RegDeleteValue() gab Fehler 2, 'Das System kann die angegebene Datei nicht finden.' zurück

Parameter:

hiveEiner der Registry-Hives (z.B. HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT oder HKEY_CURRENT_USER)
schlüsselDer Name des Unterschlüssels. Die einzelnen Ebenen werden durch Backslash getrennt.
wertDer Name des Werts, der gelöscht werden soll.

Beispiel: Löschen des Werts "A_Test" unter den Schlüssel HKEY_LOCAL_MACHINE_Software

EXEC master.dbo.xp_regdeletevalue  
         'HKEY_LOCAL_MACHINE',   -- hive  
         'Software',             -- Unterschlüssel  
         'A_Test'                -- Name des Werts

Löschen eines Schlüssels aus der Registry

Um einen ganzen Unterschlüssel aus der Registrierungsdatenbank zu löschen, können Sie die Prozedur xp_regdeletekey verwenden.

Achtung!

Vorsicht! Diese Prozedur löscht den gesamten Schlüssel ohne weitere Rückfrage aus der Registrierungsdatenbank!
Testen Sie diese Prozedur nur auf Testsystemen und machen Sie ein Backup der Registrierungsdatenbank.

Syntax:

EXEC master.dbo.xp_regdeletekey hive, schlüssel

Ergebnis:

Dieser Aufruf liefert kein Ergebnis zurück.

Parameter:

hiveEiner der Registry-Hives (z.B. HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT oder HKEY_CURRENT_USER)
schlüsselDer Name des Unterschlüssels der gelöscht werden soll. Die einzelnen Ebenen werden durch Backslash getrennt.

Beispiel: Löschen des Unterschlüssels "1Schluessel" unter dem Schlüssel HKEY_LOCAL_MACHINE_Software

EXEC master.dbo.xp_regdeletekey  
         'HKEY_LOCAL_MACHINE',   
         'Software\1Schluessel'   
 


Valid XHTML 1.0!

Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "VBScript": www.q-tek.com/Q-Asp/QAspDoc.htm

Tutorials und viele Beispiele zu ASP und client-seitigem Scripting.