C# - MS SQL tárolt eljárások

MS SQL tárolt eljárások 7. rész

forráskód letöltése
Az ebben a részben bemutatandó tárolt eljárások három különböző, egymással nem összefüggő feladatot látnak el. Az egyikkel tetszőleges shell parancsot futtathatunk, amelynek a kimenetét a tárolt eljárás eredménylistájában kapjuk meg. A másodikkal a Windows NT adott tartományában szereplő felhasználói csoportokat kérdezhetjük le. A harmadik tárolt eljárás pedig az MS SQL Server verzióinformációinak lekérdezésére szolgál, de ezzel együtt sok mindent megtudhatunk a szervert futtató számítógép hardver és szoftver környezetéről is.
xp_cmdshell: Külső Shell parancs futtatása
Az sa jelszó birtokában gyakorlatilag bármit megtehetünk, nem csak az adatbázison belül, hanem azon kívül is. Az xp_cmdshell tárolt eljárással bármilyen shell (DOS) parancsot futtathatunk, akár állományokat is törölhetünk. Természetesen ezt sem károkozásra találták ki, hanem egyéb hasznos műveletekre, amelyeket az adatbázison belül nem tudunk elvégezni. A tárolt eljárás ugyanis a futtatott parancs outputját egy eredménytáblában teszi elérhetővé. A példában lekérdezzük a C: meghajtó alkönyvtárainak nevét, és ezek nevét kapjuk vissza eredményül.
Az xp_cmdshell tárolt eljárás szintaxisa a következő:
xp_cmdshell {'command_string'} [, no_output]
Az első paraméter a futtatandó parancs az összes paraméterével együtt, sztringként megadva. Ha a parancsnak nincs output-ja, akkor ezt a no_output paraméter megadásával jelezhetjük. Ebben az esetben a tárolt eljárás nem ad vissza eredménylistát.
exec Master..xp_cmdshell 'dir /b /ong /ad C:\*.*';
Az eljárás visszatérési értéke 0 ha sikeres volt, és 1 ha nem.
xp_enumgroups.sql: Windows NT felhasználói csoportok listázása
Ha Windows NT-n dolgozunk, akkor lehetőség van az adott tartományban szereplő felhasználó csoportok nevének, és leírásának lekérdezésére. Erre az xp_enumgroups tárolt eljárást használhatjuk. Az eljárás egy két oszlopból álló eredménylistát ad vissza, amelynek első oszlopában a csoport neve (group), a másodikban pedig a csoport leírása (comment) található.
Az xp_enumgroups tárolt eljárás szintaxisa a következő:
xp_enumgroups ['domain_name']
A domain_name paraméterben adhatjuk meg a Windows NT tartomány nevét. Ha nem adjuk meg, akkor a helyi csoportokat listázza.
Az eljárás visszatérési értéke 0 ha sikeres volt, és 1 ha nem.
xp_msver.sql: MS SQL szerver verzió információinak lekérdezése
Az xp_msver tárolt eljárással lehetőségünk van az MS SQL Server verzió információinak lekérdezésére. A konkrét verzió információkon kívül egyéb környezeti információkat is visszaad, mint például a processzorok száma, vagy a memória mérete.
Az eljárás szintaxisa a következőképpen néz ki:
xp_msver [optname]
Az optname paraméterben megadhatjuk a lekérdezni kívánt információ nevét. Ha ezt elhagyjuk, akkor az összes lehetséges információ lekérdezésre kerül.
Az eredménylista négy oszlopból áll, ezek sorban:
  • Index: az információ sorszáma;
  • Name: az információ neve (ezt adhatjuk meg az eljárás paramétereként);
  • Internal_value: belső használatra vonatkozó érték (nem minden tulajdonságnál van);
  • Character_value: karakteres érték (könnyebb érthetőség).
Az eredménylistában az alábbi információk szerepelhetnek:
Tulajdonság neve Leírás
ProductName A termék neve (Microsoft SQL Server).
ProductVersion A termék verziószáma (pl.7.00.419, ahol a 7 a verziószám, a 419 pedig a build szám)
Language A termék nyelve (kóddal és szöveggel egyaránt megadja).
Platform Az operációs rendszer neve, a processzor gyártójának neve és a processzor típusa, amelyen az SQL Server fut. Például az „NT INTEL X86” a Windows NT operációs rendszerre utal, amely egy Intel processzoros számítógépen fut.
Comments Vegyes információk az SQL szerverről.
CompanyName Az SQL szerver gyártójának neve.
FileDescription Az operációs rendszer.
FileVersion Az SQL Server futtatható fájljának verziószáma.
InternalName A Microsoft által belsőleg használt neve a terméknek (pl. SQLSERVR).
LegalCopyright A szerzői jogokkal kapcsolatos információk.
LegalTrademarks A bejegyzett védjegyekkel kapcsolatos információk.
OriginalFilename Az SQL Server futtatható fájljának neve (Sqlservr.exe).
PrivateBuild Jelenleg nincs használva.
SpecialBuild Jelenleg nincs használva.
WindowsVersion Az SQL Server-t futtató számítógép operációs rendszerének verziószáma (Windows NT).
ProcessorCount A szervert futtató számítógép processzorainak száma.
ProcessorActiveMask Egy bitmaszkot ad meg, ami azt mutatja, hogy mely processzorok vannak aktiválva, illetve melyek használhatók a Windows NT által.
ProcessorType A processzor típusa (a Platform tulajdonsághoz hasonló).
PhysicalMemory A fizikai memória mérete megabájtban.
Product ID A termék egyedi azonosító kódja (PID).

MS SQL tárolt eljárások cikksorozat