C# - A sysusers rendszertábla

MS SQL Server rendszertáblái 14. rész

forráskód letöltése
Cikksorozatunk utolsó számában a sysusers rendszertáblával ismerkedhetünk meg, mint a felhasználói adatbázisok mindegyikében megtalálható utolsó adattáblával. A sorozat korábbi cikkeiben érintőlegesen foglalkoztunk már a sysusers táblával, most azonban felsoroljuk, milyen oszlopokkal rendelkezik a rendszertábla, és hogy miként kerülhet bejegyzés a táblába.
A példához szükséges a SampleDatabase14 adatbázis, melyet a mellékelt Run_script.cmd BATCH állomány lefuttatásával hozhatunk létre úgy, hogy első parancssori argumentumként megadjuk a szerver nevét, melyen az adatbázist létre kívánjuk hozni, második argumentumként megadjuk az SQL állomány nevét. Példa: C:\Run_script.cmd <szervernév> SampleDatabase14.sql. A SampleDatabase14.sql script 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
sysusers rendszertábla
A felhasználó által létrehozott adatbázisokban a sysusers rendszertábla tartalmaz egy-egy bejegyzést minden Windows felhasználóról, felhasználói csoportról, illetve minden MS SQL Server felhasználóról és szerepről.
A felhasználók lehetnek a MS SQL Serverhez globálisan LOGIN-ként hozzáadott felhasználó sémák megszemélyesítései adatbázisszinten, vagy saját deklarálású felhasználók. A MS SQL Server ugyanis megengedi, hogy globálisan a szerveren deklarált login-ok ne rendelkezzenek jogosultságokkal bizonyos adatbázisokban alapértelmezett módon.
A sysusers rendszertábla a következő adatokat tartalmazza az egyes felhasználókról, illetve csoportokról:
Oszlop neve Típusa Leírása
uid smallint Felhasználói azonosító, mely egyedi az adott adatbázisban. 1, ha az adatbázis tulajdonosáról van szó.
status smallint Belső használatra.
name sysname A felhasználó, vagy csoport neve, mely egyedi az adott adatbázisban.
sid varbinary(85) Titkos azonosító.
roles varbinary(2048) Belső használatra.
createdate datetime A bejegyzés készítésének dátuma.
updatedate datetime Az utolsó módosítás dátuma.
altuid smallint Belső használatra.
password varbinary(256) Belső használatra.
gid smallint A csoport azonosítója, melyhez az adott felhasználó tartozik. Ha a gid = uid, akkor csoportról van szó.
environ varchar(255) Fenntartott.
hasdbaccess int 1, ha az adott felhasználó, vagy csoport rendelkezik adatbázis-hozzáféréssel.
islogin int 1, ha a bejegyzés Windows felhasználó, illetve csoport, vagy SQ Server felhasználó LOGIN joggal.
isntname int 1, ha a bejegyzés egy Windows felhasználó, illetve csoport.
isntgroup int 1, ha a bejegyzés egy Windows csoport.
isntuser int 1, ha a bejegyzés egy Windows felhasználó.
issqluser int 1, ha a bejegyzés egy SQL Server felhasználó.
isaliased int 1, ha a bejegyzés mögött egy másik felhasználó van.
issqlrole int 1, ha a bejegyzés egy SQL Server szerep.
isapprole int 1, ha a bejegyzés egy alkalmazás szerep.
A sorozat korábbi részeiben említést tettünk néhány rendszerfüggvényről, melyekkel felhasználók adhatók globális, vagy lokális (adatbázis-szinten) a rendszerhez. Mivel a sysusers rendszertáblába nemcsak felhasználók, hanem szerepek adatbázishoz történő hozzáadásakor kerül bejegyzés, ezért ismertetünk két olyan rendszerfüggvényt, melyekkel egyszerűen adhatunk szerepeket az adatbázishoz.
sp_addrole rendszerfüggvény
A sp_addrole használható szerepek felvételére. Szintaxisa:
sp_addrole [@rolename] [@ownername]
A @rolename paraméterben kell megadnunk egy új szerep nevét, mely egyedi, és alapértelmezett értéke nincs. Típusa sysname.
A @ownername paraméterben adjuk meg a szerep tulajdonosát, mely alapértelmezésben a dbo. Tulajdonosként egy felhasználó, vagy szerep adható meg.
Használata:
exec sp_addrole ’newrole’,’dbo’
sp_droprole rendszerfüggvény
A függvénnyel törölhetünk egy adott szerepet. Szintaxisa:
sp_droprole [@rolename]
Egyetlen paraméterében meg kell adnunk egy korábban létrehozott, vagy beépített szerepet. A paraméter típusa sysname, és nincs alapértelmezett értéke.
Használata:
exec sp_droprole ’newrole’
Példa
A mellékelt példában induláskor az sp_addlogin rendszerfüggvénnyel létrehozunk egy globális felhasználót a MS SQL rendszerben, majd ezt a login-t sampleuser néven, a sp_adduser rendszerfüggvénnyel hozzáadjuk felhasználóként a SampleDatabase14 adatbázisunkhoz.
A Form felső DataGrid kontroljában a master adatbázis sysxlogins rendszertáblájának elemei láthatók, ahol megnézhetjük, hogy valóban létrejött globális szinten a Visitor LOGIN, ugyanis ez a rendszertábla ezeket tartalmazza.
Az alsó DataGrid kontrolban megtalálhatjuk a sampleuser felhasználót, mely a ’User törlése’ gombbal törölhető is.

MS SQL Server rendszertáblái cikksorozat