|
Transact SQL Script: regReadVorwahlen.SQL
questions? mailto:info@itrain.de
Download SQL Script
Dieses Script dient nur Demonstrationszwecken. Verwendung des Scripts erfolgt auf eigene Gefahr.
-- Beispiel für das Arbeiten mit erweiterten gespeicherten Prozeduren -- zum Lesen der Registry -- Fragen? sql@itrain.de -- -- Dieses kleine Transact SQL Skript zeigt, wie Werte aus der Registry gelesen werden -- können -- Als Beispiel werden die von TAPI in der Registry abgelegten Vorwahlen ausgelesen -- und in eine Tabelle geschrieben -- ACHTUNG! Dieses Beispiel erstellt in der aktuellen Datenbank eine neue -- Tabelle mit dem Namen [Internationale_Vorwahlen] -- Sollte in der Datenbank bereits eine Tabelle mit diesem Namen vorhanden -- sein so wird diese GELÖSCHT! SET NOCOUNT ON DECLARE @startSchluessel varchar(128) DECLARE @aktSchluessel varchar(128) DECLARE @retCode int DECLARE @land varchar(128) DECLARE @vorwahl int SET @startSchluessel = 'Software\Microsoft\Windows\CurrentVersion\Telephony\Country List' -- Erstellen der Zieltabelle Internationale_Vorwahlen mit den Spalten -- id, Vorwahl und Land IF OBJECT_ID('Internationale_Vorwahlen', 'U') IS NOT NULL DROP TABLE [Internationale_Vorwahlen] CREATE TABLE [Internationale_Vorwahlen] (id int PRIMARY KEY, Vorwahl int, Land varchar(80)) -- Erstellen zweier temporärer Tabellen -- #landids für die Liste aller Landids in der Registry CREATE TABLE #landids(id int) -- Ermitteln aller Land-Ids mit Hilfe von xp_regEnumKeys INSERT INTO #landids EXEC @retcode = master.dbo.xp_regenumkeys 'HKEY_LOCAL_MACHINE', @startSchluessel IF @retcode <> 0 OR @@ERROR <> 0 BEGIN PRINT 'Fehler beim Lesen der Registry' RETURN END DECLARE @curID int -- Deklaration eines Cursors zum Durchlaufen aller gefundenen Schluessel DECLARE laenderCursor CURSOR FAST_FORWARD FOR SELECT id FROM #landids OPEN laenderCursor FETCH NEXT FROM laenderCursor INTO @curID WHILE @@FETCH_STATUS = 0 BEGIN SET @aktSchluessel = @startSchluessel + '\' + CAST(@curid as varchar(8)) -- Lesen des Wertes Name EXEC @retCode = master.dbo.xp_RegRead 'HKEY_LOCAL_MACHINE', @aktSchluessel, 'Name', @land OUTPUT EXEC @retCode = master.dbo.xp_RegRead 'HKEY_LOCAL_MACHINE', @aktSchluessel, 'CountryCode', @vorwahl OUTPUT INSERT INTO [Internationale_Vorwahlen] (id, Vorwahl, Land) VALUES (@curid, @vorwahl, @land) FETCH NEXT FROM laenderCursor INTO @curID END CLOSE laenderCursor DEALLOCATE laenderCursor DROP TABLE #landids SELECT * FROM [Internationale_Vorwahlen] ORDER BY Land
|