Utökade procedurer - odokumenterade
Förord
En utökad lagrad procedur (XP) är ett dynamiskt länkbibliotek som körs direkt från SQL Servern adressfält, och är programmerad till att använda SQL Serverns Open Data Services API. Du kan köra de utökade lagrade procedurerna från t ex Query Analyzer, precis som du skulle göra med de lagrade procedurerna. Utökade lagrade procedurer används till att utöka SQL Serverns kapaciteter. Du kan antingen utnyttja någon av de utökade lagrade procedurerna som följer med SQL Server, eller så kan du själv skapa en genom att använda programmeringsspråk som t ex C eller C++.
Användbara odokumenterade utökade Lagrade procedurer i SQL Server
av Alexander ChigrikI den här artikeln tänker jag skriva om utökade odokumenterade lagrade procedurer. Följande utökade procedurerna fungerar i SQL Server 7.0 så väl som i SQL Server 2000.
sp_MSgetversion
Denna utökade procedur kan användas till att visa den aktuella versionen av din Microsoft SQL Server. För att göra det skriver du:
EXEC master..sp_MSgetversion
Not. Ett vanligare sätt att få fram den aktuella versionen av Microsoft SQL Server (Vilken också ger mer information) är genom att använda följande SELECT sats:
SELECT @@version
xp_dirtree
Denna utökade procedur kan användas till att få en lista på alla underkataloger i den XP angivna katalogen. För att få en lista på alla underkataloger i c:\MSSQL7 katalogen så kör du:
EXEC master..xp_dirtree ‘c:\MSSQL7’
xp_subdirs
Den här utökade proceduren kan också användas för att lista alla underkataloger i den XP angivna katalogen. I jämförelse med xp_dirtree så returnerar xp_subdirs endast de sökvägar som ligger en nivå under. Se exemplet:
EXEC master..xp_subdirs ’c:\MSSQL7’
xp_enum_oledb_providers
Den här utökade proceduren används till att lista alla tillgängliga OLE DB providers (distribuerare). Den returnerar Provider Name, Parse Name och Provider Description. För att få en lista på alla OLE DB providers i din SQL Server, kör då:
EXEC master..xp_enum_oledb_providers
xp_enumcodepages
Den här utökade proceduren används till att lista upp alla kodsidor, teckenuppsättningar och deras beskrivningar, till din SQL Server. För att göra det, kör då:
EXEC master..xp_enumcodepages
xp_enumdsn
Den här utökade proceduren listas systemets alla DSN med dess beskrivningar. För att göra det så kör du:
EXEC master..xp_enumdsn
xp_enumerrorlogs
Den här utökade proceduren returnerar en lista på alla Errorloggar samt datum för senaste ändringar. För att lista alla Errorloggar, kör då:
EXEC master..xp_enumerrorlogs
xp_enumgroups
Den här utökade proceduren returnerar en lista på alla grupper i Windows NT, samt deras beskrivningar. För att göra det kör du:
EXEC master..xp_enumgroups
xp_fileexist
Med den här utökade proceduren kan du få reda på om en specifik fil finns på hårddisken eller inte. Syntaxen för denna XP ser ut som följande:
EXECUTE xp_fileexist filnamnet [, file_exists INT OUTPUT]
Så om du t ex vill veta huruvida filen boot.ini ligger på c: eller inte, så kör du:
EXEC master..xp_fileexist ’c:\boot.ini’
xp_fixeddrives
Den här väldigt användbara utökade proceduren, returnerar en lista på alla hårddiskar, tillsammans med mängden ledigt utrymme på varje hårddisk. För att se listan, kör då:
EXEC master..xp_fixeddrives
xp_getnetname
Den här utökade proceduren returnerar WINS namnet på den SQL Server som du är ansluten till. För att se namnet så kör du:
EXEC master..xp_getnetname
xp_readerrorlog
Den här utökade proceduren returnerar innehållet i Errorloggen, som enligt standard ligger i c:\MSSQL7\Log sökvägen. För att läsa din Errorloggfil så kör du:
EXEC master..xp_readerrorlog
xp_regdeletekey
Den här utökade proceduren raderar hela nyckeln från registret, så du bör vara väldigt försiktig när du använder den. Syntaxen ser ut som följande:
EXECUTE xp_regdeletekey [@rootkey=]‘rootkey’, [@key=]‘key’
Så för att t ex ta bort nyckeln ’SOFTWARE\test’ från ’HKEY_LOCAL_MACHINE’, kör:
EXEC master..xp_regdeletekey @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Test'
xp_regdeletevalue
Den här utökade proceduren kommer att ta bort ett specifikt värde på en nyckel från registret. Du bör även använda den här försiktigt. Syntaxen är:
EXECUTE xp_regdeletevalue [@rootkey=]'rootkey', [@key=]'key', [@value_name=]'value_name'
Så om du t ex vill ta bort värdet 'TestValue' för nyckeln 'SOFTWARE\Test' från ‘HKEY_LOCAL_MACHINE', kör då:
EXEC master..xp_regdeletevalue @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Test', @value_name='TestValue'
xp_regread
Den här utökade proceduren används till att läsa från registret. Syntaxen är:
EXECUTE xp_regread [@rootkey=]'rootkey', [@key=]'key' [, [@value_name=]'value_name'] [, [@value=]@value OUTPUT]
Så för att t ex läsa in till variabeln @test från värdet 'TestValue' från nyckeln 'SOFTWARE\Test' från 'HKEY_LOCAL_MACHINE', kör då:
DECLARE @test varchar(20)EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Test', @value_name='TestValue', @value=@test OUTPUTSELECT @test
xp_regwrite
Den här utökade proceduren används till att skriva till registret. Syntaxen är:
EXECUTE xp_regwrite [@rootkey=]'rootkey', [@key=]'key', [@value_name=]'value_name', [@type=]'type', [@value=]'value'
Så om du t ex vill skriva in variabeln 'Test' till 'TestValue' värdet, med nyckeln 'SOFTWARE\Test', från 'HKEY_LOCAL_MACHINE', kör då:
EXEC master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Test', @value_name='TestValue', @type='REG_SZ', @value='Test'
Kom bara ihåg att dessa utökade odokumenterade lagrade procedurer inte officiellt stöds utav Microsoft, och att de kanske inte kommer att finnas med i nästa version av SQL Server.
0 Kommentarer