
A példához szükséges a SampleDatabase11 adatbázis, melyet a mellékelt SampleDatabase11.sql parancsállomány lefuttatásával hozhatunk létre. A SampleDatabase11.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.
A rendszertábla bejegyzései nagyon hasonlítanak a sorozat ezt megelőző számában ismertetett syspermissions rendszertábla bejegyzéseihez, mintegy kiegészítve azt. A sysprotects rendszertábla adatai is bizonyos objektumokhoz adott felhasználónak adott, illetőleg adott felhasználótól elvett jogokkal kapcsolatos információkat tartalmaznak, csak más csoportosításban. Az MS SQL Server igen nagy hangsúlyt fektet a többszintű jogosultsági rendszer kezelésére, valószínűleg az adatok több-szempontú tárolása is azt a célt szolgálja, hogy az adott jogok több formában tárolódjanak, és nagy felhasználószám esetén is könnyű legyen egy adott információt előkeresni bizonyos időn belül. Ezen túlmenően a módszer eredményeképpen az adatbázis sérülékenysége is kisebb.
Múlt heti cikkünkben bemutattuk, hogyan adhatunk szerverszintű, valamint adatbázisszintű felhasználókat rendszerünkhöz, így a példaprogramunk indítása utáni inicializációs lépésekben felhasznált rendszerfüggvények ismertetésétől eltekintünk.
Vizsgáljuk meg a rendszertábla oszlopait:
| Oszlopnév |
Típus |
Leírás |
| id |
int |
Az objektum azonosítója, melyhez valamilyen felhasználói jog kapcsolódik. |
| uid |
smallint |
A felhasználó, vagy felhasználói csoport sysobjects rendszertáblabeli azonosítója, melyhez a jog kapcsolható. |
| action |
tinyint |
A felhasználói jog típusára utaló kód. Értékei: 26 = REFERENCES, 178 = CREATE FUNCTION, 193 = SELECT, 195 = INSERT, 196 = DELETE, 197 = UPDATE, 198 = CREATE TABLE, 203 = CREATE DATABASE, 207 = CREATE VIEW, 222 = CREATE PROCEDURE, 224 = EXECUTE, 228 = BACKUP DATABASE, 233 = CREATE DEFAULT, 235 = BACKUP LOG, 236 = CREATE RULE. |
| protecttype |
tinyint |
Az adott felhasználó joghoz kapcsolódó viszonya. Értékei: 204 = GRANT_W_GRANT, 205 = GRANT, 206 = REVOKE. |
| columns |
varbinary(4000) |
Annak az oszlopnak az azonosítója egy bitmintában megfogalmazva, melyhez a SELECT vagy UPDATE jog kapcsolódik. Értékei: 0: minden oszlopra vonatkozik a jogosultság, NULL: nincs információ. |
| grantor |
smallint |
A felhasználói jogot átruházó felhasználó azonosítója (ezzel a joggal rendelkező felhasználó). |
A program kapcsolódó funkciói attól a pillanattól kezdve elérhetőek, hogy a rendszerben szerverszintű, majd adatbázisszintű felhasználót hoztunk létre. A program indulásakor az Indítás gombra kattintva érhető el, hogy a kezdeti beállítások megtörténjenek, a VISITOR nevű felhasználó létrejöjjön, és SAMPLEUSER néven – a PUBLIC csoport részeként – hozzáadódjon példa adatbázisunkhoz.
A felhasználó létrehozása a mellékelt script lefuttatása után az adatbázisba került AddLogin és AddUser tárolt eljárások végrehajtásával történik, melyek az sp_addlogin és sp_adduser rendszerfüggvényeket hívják meg, a múlt heti cikkben ismertetett módon.
A felhasználóhoz a Form-on elhelyezett ComboBox-ban felsorolt jogok közül adhatjuk a kiválasztottat, tetszőleges módon. A ’Választott jog hozzáadása’ gombbal GRANT, míg a ’Választott jog törlése’ gombbal REVOKE utasítást hajtunk végre a kiválasztott jog felhasználásával, melyek a Table1 adatbázistáblánkat érintik.
Az egyes jogok hozzáadása után a sysprotects rendszertáblába került bejegyzéseket ellenőrizhetjük a DBGrid kontrolban.