
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:
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ő DBGrid 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ó DBGrid kontrolban megtalálhatjuk a sampleuser felhasználót, mely a ’User törlése’ gombbal törölhető is.