C# - A sysobjects rendszertábla

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

forráskód letöltése
A cikksorozatnak ebben a számában a sysobjects rendszertáblával foglalkozunk részletesebben, mely szintén minden létrejövő adatbázisban megtalálható, és a sorozat korábbi cikkei közül szinte valamennyiben említést tettünk róla. Most bemutatásra kerül a táblában található valamennyi oszlop, valamint egy példán keresztül ismertetjük, hogy milyen adatok tárolására használja a rendszer a táblát.
A példához szükséges a SampleDatabase09 adatbázis, melyet a mellékelt SampleDatabase09.sql lefuttatásával hozhatunk létre. A SampleDatabase09.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 sysobjects rendszertábla a rendszer objektumait definiáló információkat tartalmazza. Ezek az objektumok lehetnek megszorítások, táblák, tárolt eljárások, vagy akár szerepek.
A sorozat korábbi cikkeiben szinte valamennyi példában említettük, hiszen néhány más rendszertáblában elhelyezett bejegyzés hatással volt a sysobjects rendszertáblára is. A különböző rendszertáblákban megjelenő objektumok általában hivatkoztak valamilyen főobjektumra a sysobjects táblából, annak azonosítóját felhasználva.
Lássuk, milyen oszlopai vannak a rendszertáblának:
Sorszám Oszlop neve Típusa Leírás
1 name sysname Az objektum neve.
2 id int Az objektum azonosítója.
3 xtype char(2) Az objektum típusa. A cikk későbbi szakaszában kerül tárgyalásra.
4 uid smallint Az objektum tulajdonosának azonosítója.
5 info smallint Fenntartott.
6 status int Fenntartott.
7 base_schema_ver int Fenntartott.
8 replinfo int Fenntartott.
9 parent_obj int Az objektum szülő-objektumának azonosítója (például trigger esetén a tábla).
10 crdate datetime Az objektum létrehozásának ideje.
11 ftcatid smallint Az objektumnak az SQL Server ún. full-text rendszerében megtalálható azonosítója.
12 schema_ver int Séma azonosító, mely növekszik eggyel, ha megváltozik egy tábla sémája.
13 stats_schema_ver int Fenntartott.
14 type char(2) Az objektum típusa. A cikk későbbi szakaszában kerül tárgyalásra.
15 userstat smallint Fenntartott.
16 sysstat smallint Belső státusz-információ.
17 indexdel smallint Fenntartott.
18 refdate datetime Fenntartott.
19 version int Fenntartott.
20 deltrig int Fenntartott.
21 instrig int Fenntartott.
22 updtrig int Fenntartott.
23 seltrig int Fenntartott.
24 category int Fenntartott.
25 cache smallint Fenntartott.
A type oszlopokban szereplő értékek 1-, illetve 2-betűs rövidítések, melyek az objektum típusát azonosítják. Ezeket foglalja össze a következő táblázat:
Típus-azonosító Jelentés
C CHECK megszorítás.
D DEFAULT megszorítás.
F Idegen kulcs megszorítás.
FN Skaláris függvény.
IF INLINE tábla függvény.
K PRIMARY KEY vagy UNIQUE megszorítás.
L LOG.
P Tárolt eljárás.
R Szerep.
RF Replikációs szűrő tárolt eljárás.
S Rendszertábla.
TF Tábla függvény.
TR Trigger.
U Felhasználói tábla.
V Nézet.
X Kiterjesztett tárolt eljárás.
A mellékelt példaprogram bemutatja, hogyan kerül új bejegyzés a sysobjects rendszertáblába. Ez akkor következik be, amikor manuálisan, vagy – mint jelen esetben programból – létrehozunk egy táblát, vagy tárolt eljárást. Ezt a programban a következőképpen tehetjük meg: a táblázat létrehozásához nyomjuk le az „Új tábla létrehozása” feliratú gombot. A gomb lenyomásakor végrehajtódik egy tárolt eljárás, mely a mellékelt sql script lefuttatásakor kerül az adatbázisba, és CreateTable néven találhatjuk meg. Eredményeképpen létrejön egy Table1 nevű tábla. A sysobjects rendszertáblába a következő bejegyzések kerülnek, amikor az adatbázisba bekerül a két tárolt eljárás, és a Table1 tábla. Az adatok közül elhagytuk az utolsó oszlopokat:
1 2 3 4 5 6 7 8 9
CreateTable 1977058079 P 1 0 1073741824 0 0 0
DropTable 1993058136 P 1 0 1073741824 0 0 0
Table1 2041058307 U 1 2 1073741824 0 0 0
Az adatok másik fele:
10 11 12 13 14 15 16 17 18
2003.01.11 1:07 0 0 0 P 0 4 0 2003.01.11 1:07
2003.01.11 1:07 0 0 0 P 0 4 0 2003.01.11 1:07
2003.01.11 1:41 0 0 0 U 1 67 0 2003.01.11 1:41
A „Tábla törlése” feliratú gombot megnyomva a létrehozott tábla törölhető, minek következtében a két imént létrejött rekord törlődik a sysobjects táblából. A törlést a létrehozáskor az adatbázisba bekerült DropTable nevű tárolt eljárás végzi el.

MS SQL Server rendszertáblái cikksorozat