C# - A syscolumns rendszertábla

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

forráskód letöltése
Valószínűleg minden MS SQL Server-t használó fejlesztőnek feltűnt, hogy már az adatbázisok létrehozásakor számtalan tábla részévé válik az adatbázisnak. A látszólag funkció nélküli táblák azonban fontos relációs adattáblák, melyekben valamennyi, a szerver működéséhez szükséges információ megtalálható. Cikksorozatunk a minden adatbázisban létrejövő rendszertáblák funkcióinak, tartalmának bemutatását tűzte ki célul. Ez a cikkünk a syscolumns táblával foglalkozik részletesen.
A példához szükséges a SampleDatabase01 adatbázis, melyet a mellékelt SampleDatabase01.sql lefuttatásával hozhatunk létre. A SampleDatabase01.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.
Általában nem kerül sor arra, hogy a rendszertáblákat közvetlenül, vagyis a felhasználók, illetve alkalmazások által módosítsuk, ám bizonyos esetekben nem árt tudni, milyen információt tartalmaznak.
Bemutatandó táblánk a syscolumns rendszertábla, mely a rendszerben kezelt valamennyi adattábla, illetve nézettábla valamennyi oszlopáról tartalmaz egy-egy bejegyzést. Az egyes sorok az adott oszlop típusát, valamint más táblákban való viselkedését adják meg, illetve található egy sor minden tárolt eljárásbeli paraméterhez. Lássuk sorban az egyes oszlopokat.
Sorszám Oszlopnév Típus Leírás
1 name sysname Az adott oszlop vagy paraméter neve.
2 id int A tábla objektum-azonosítója, melyhez az oszlop tartozik, vagy annak a tárolt eljárásnak az azonosítója, melynek a paraméter az argumentuma.
3 xtype tinyint Fizikai tárolási típus. Külső kulcs a systypes rendszertáblából.
4 typestat tinyint Belső használatú, nem dokumentált.
5 xusertype smallint A felhasználó által definiált típusok azonosítója.
6 length smallint A fizikai tárolási méret. Külső kulcs a systypes rendszertáblából.
7 xprec tinyint Belső használatú, nem dokumentált.
8 xscale tinyint Belső használatú, nem dokumentált.
9 colid smallint Oszlop-, vagy paraméterazonosító.
10 xoffset smallint Belső használatú, nem dokumentált.
11 bitpos tinyint Belső használatú, nem dokumentált.
12 reserved tinyint Belső használatú, nem dokumentált.
13 colstat smallint Belső használatú, nem dokumentált.
14 cdefault int Az oszlopra alapértelmezett érték beállításakor annak azonosítója.
15 domain int Az oszlopra „rule”-t, vagy CHECK megszorítást megadva ezek azonosítója.
16 number smallint Eljárás-csoportok esetén az aleljárások száma. 0, amennyiben nincsenek ilyen eljárások.
17 colorder smallint Belső használatú, nem dokumentált.
18 autoval varbinary(255) Belső használatú, nem dokumentált.
19 offset smallint Meghatározza, hogy az adott oszlop hányadik a sorban (rekordban). Negatív értékű, ha a sor változó oszlopszámú.
20 status tinyint Értéke egy bitsorozat, mely leírja egy tulajdonságát az oszlopnak vagy paraméternek. Értékei: 0x08: Az oszlopban megengedett a null érték. 0x40: A paraméter OUTPUT paraméter. 0x80: Az oszlop IDENTITY oszlop.
21 type tinyint Fizikai tárolási típus. Külső kulcs a systypes rendszertáblából.
22 usertype smallint A felhasználó által definiált típusok azonosítója. Külső kulcs a systypes rendszertáblából.
23 printfm varchar(255) Belső használatú, nem dokumentált.
24 prec smallint Pontosság az adott oszlopban.
25 scale int Skála az adott oszlophoz.
26 iscomputed int A flag megadja, hogy az adott oszlop szerepel-e lekérdezés COMPUTE záradékában. 0: nem szerepel 1: szerepel
27 isoutparam int A flag megadja, hogy a paraméter OUTPUT paraméter, vagy nem. 0: nem 1: igen
28 isnullable int A flag megadja, hogy az oszlop megengedhet-e null értéket. 0: nem 1: igen
A mellékelt példaprogram bemutatja, hogyan kerül új bejegyzés a syscolumns 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 CreateNewTable néven találhatjuk meg. Eredményeképpen létrejön egy Table1 nevű tábla. A létrehozott tábla két oszlopot tartalmaz, így a syscolumns rendszertáblába két új sor kerül. Az eredményről magunk is meggyőződhetünk, ha megkeressük a vizuális komponensben az alábbi két sort, ahol a 28 darab oszlopot a megfelelő számok jelentik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
ID 1525580473 56 1 56 4 10 0 1 4 0 0 0 0 0 0 1 NULL 2 0 56 7 NULL 10 0 0 0 0
Name 1525580473 167 3 167 50 0 0 2 -1 0 0 0 0 0 0 2 NULL -1 16 39 2 NULL 50 NULL 0 0 0
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 syscolumns 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. A tárolt eljárásoknak nincs paraméterlistája, így azok semmilyen formában nem szerepelnek a táblában. A syscolumns rendszertábla aktuális rekordszámát jelzi a felületen lévő felirat, melynek változásából szintén követhetők a műveletek.

MS SQL Server rendszertáblái cikksorozat