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

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

forráskód letöltése
Ebben a részben a táblák, és azok oszlopaihoz tartozó privilégiumokat lekérdező tárolt eljárásokat vizsgáljuk meg részletesen. Ezeknek az eljárásoknak a segítségével leellenőrizhetjük, hogy melyik felhasználónak van például joga egy adott tábla rekordjainak lekérdezésére, törlésére, módosítására. Ugyanezeket a jogokat lekérdezhetjük egy adott tábla mezőire vonatkoztatva is.
1_sp_table_privileges.sql: Egy tábla privilégiumainak lekérdezése.
Egy tábla privilégiumait az sp_table_privileges tárolt eljárással kérdezhetjük le. Az eljárás szintaxisa a következő:
sp_table_privileges [ @table_name_pattern = ] 'table_name_pattern' 
    [ , [ @table_owner_pattern = ] 'table_owner_pattern' ] 
    [ , [ @table_qualifier = ] 'table_qualifier' ]
A tárolt eljárás paraméterei:
table_name_pattern
A tábla, vagy táblák neveit adhatjuk meg ebben a paraméterben. A joker karakterek (pl. „%”) engedélyezettek, így akár több tábla adatait is lekérdezhetjük.
table_owner_pattern
A tábla tulajdonosának neve. Itt is használhatók a joker karakterek, de ezt a paramétert nem kötelező megadni.
table_qualifier
Az adatbázis nevét adhatjuk meg ebben a paraméterben, de ez is elhagyható.
Az eljárás egy eredménylistát ad vissza az alábbi táblázatban szereplő mezőkkel:
Oszlop neve Adattípus Leírás
TABLE_QUALIFIER sysname Az SQL szerveren belül az adatbázis neve. Értéke lehet NULL is.
TABLE_OWNER sysname A tábla tulajdonosának neve.
TABLE_NAME sysname A tábla neve.
GRANTOR sysname Annak a felhasználónak a neve, aki megadta a hozzáférési jogot a táblához a GRANTEE mezőben lévő felhasználónak.
GRANTEE sysname Annak a felhasználónak a neve, akinek jogosultsága van a TABLE_NAME mezőben megadott táblában a PRIVILEGE mezőben megadott művelet végrehajtására.
PRIVILEGE sysname Egy a lehetséges műveletek közül, amelyet a GRANTEE mezőben megadott felhasználó végrehajthat a táblában. Ez lehet SELECT (rekordok lekérdezése), INSERT (rekordok beszúrása), UPDATE (rekordok módosítása), DELETE (rekordok törlése) és REFERENCES (hivatkozások létrehozása).
IS_GRANTABLE sysname Ha ennek a mezőnek értéke „YES”, akkor a GRANTEE mezőben megadott felhasználónak joga van további felhasználóknak jogokat adni a táblában elvégezhető műveletekhez.
2_sp_column_privileges: oszlop privilégiumainak lekérdezése
Egy táblán belül az oszlopokra is külön-külön megadhatunk jogokat. Ezeknek a jogoknak a lekérdezését az sp_column_privileges tárolt eljárással tudjuk lekérdezni. Az eljárás szintaxisa a következő:
sp_column_privileges [ @table_name = ] 'table_name' 
    [ , [ @table_owner = ] 'table_owner' ] 
    [ , [ @table_qualifier = ] 'table_qualifier' ] 
    [ , [ @column_name = ] 'column' ]
Az eljárás paraméterei a következők:
table_name
A lekérdezendő mezőt tartalmazó tábla neve. A tábla nevét kötelezően és egyértelműen meg kell adni, nem használhatók rövidítések (joker karakterek).
table_owner
A tábla tulajdonosának neve, nem kötelező megadni.
table_qualifier
A táblát tartalmazó adatbázis neve. Ezt sem kötelező megadni.
column_name
A tábla lekérdezendő oszlopának neve. Ha nem adjuk meg, akkor a tábla összes mezője lekérdezésre kerül.
A tárolt eljárás egy eredménylistát ad vissza az alábbi táblázatban szereplő mezőkkel:
Oszlop neve Adattípus Leírás
TABLE_QUALIFIER sysname A táblát tartalmazó adatbázis neve.
TABLE_OWNER sysname A tábla tulajdonosának neve.
TABLE_NAME sysname A tábla neve.
COLUMN_NAME sysname Az oszlop neve.
GRANTOR sysname Annak a felhasználónak a neve, aki megadta a hozzáférési jogot a táblához a GRANTEE mezőben lévő felhasználónak.
GRANTEE sysname Annak a felhasználónak a neve, akinek jogosultsága van a COLUMN_NAME mezőben megadott oszlopban a PRIVILEGE mezőben megadott művelet végrehajtására.
PRIVILEGE varchar(32) Egy a lehetséges műveletek közül, amelyet a GRANTEE mezőben megadott felhasználó végrehajthat a táblában. Ez lehet SELECT (mező adatainak lekérdezése), INSERT (új adatok beszúrása), UPDATE (adatok módosítása), DELETE (adatok törlése) és REFERENCES (hivatkozások létrehozása).
IS_GRANTABLE varchar(3) Ha ennek a mezőnek értéke „YES”, akkor a GRANTEE mezőben megadott felhasználónak joga van további felhasználóknak jogokat adni a táblában elvégezhető műveletekhez.

MS SQL tárolt eljárások cikksorozat