C# - A syscomments rendszertábla

MS SQL rendszertáblák 2. rész

forráskód letöltése
A cikksorozatnak ebben a számában a syscomments rendszertáblával ismerkedünk meg részletesebben, mely szintén minden létrejövő adatbázisban megtalálható. Az adatbázis adatairól szólunk részletesen, valamint egy példán keresztül ismertetjük, milyen kapcsolatban áll a rendszer egészével, mi is a funkciója az adott adatbázis működésében.
A példához szükséges a SampleDatabase02 adatbázis, melyet a mellékelt SampleDatabase02.sql lefuttatásával hozhatunk létre. A SampleDatabase02.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.
Mint a rendszertáblák mindegyikéről, a syscomments rendszertábláról is elmondható és hangsúlyozandó, hogy közvetlenül lehetőleg ne kerüljön sor a módosítására. A rendszer tábláinak manuális módosítása be nem látható következményekkel járhat, a rendszer integritása sérülést szenvedhet, mely végső soron a rendszer működésének zavarait okozhatja.
A syscomments rendszertábla a rendszer dokumentálásában játszik szerepet. A tábla sorai a szabályokra (rules), az alapértelmezett értékekre (defaults), triggerekre, tárolt eljárásokra, nézettáblákra és a CHECK megszorításokra vonatkozóan tartalmaznak bejegyzéseket. Az oszlopok a következők:
Sorszám Oszlop név Oszlop típus Leírás
1 id int Az objektum azonosítója.
2 number smallint Annak az eljáráscsoportnak a száma, melyben az eljárás megtalálható. Ha nincs csoportban az eljárás, értéke 0.
3 colid smallint Sor szekvencia szám az objektumhoz.
4 status smallint Belső használatú, nem dokumentált.
5 ctext varbinary(8000) Az objektum létrehozásához szükséges SQL utasítás binárisan tárolva.
6 texttype smalint Meghatározza, hogy a bejegyzés felhasználó által, vagy a rendszer által támogatott bejegyzés, vagy titkosított.
7 language smallint Belső használatú, nem dokumentált.
8 encrypted bit Meghatározza, hogy a tárolt eljárás titkosított-e vagy sem. Értéke 0, ha nem és 1, ha igen.
9 compressed bit Meghatározza, hogy a tárolt eljárás tömörített-e vagy sem. 0, ha nem és 1, ha igen.
10 text nvarchar(4000) Az objektumot létrehozó SQL utasítás tárolására.
Az utolsó, text oszloppal kapcsolatban még érdemes megemlíteni, hogy amely SQL utasítás nem fér ki az adott sorban, a rendszer több sorban is elhelyezheti azt, majd felhasználáskor összeállításáról gondoskodik. Az így maximálisan lefoglalható sorok száma 255.
A mellékelt példában azt modellezzük, hogy miként kerülhet új bejegyzés a syscomments táblába. A SamleDatabase02.sql script lefuttatásakor egy Table1 nevű példatábla is kerül az adatbázisba. A programban létrehozunk egy nézettáblát ehhez a táblához, mellyel kapcsolatos információk egy sor erejéig bekerülnek a syscomments rendszertáblába.
A program elindítása után a vizuális megjelenítést végző DataGrid komponens a syscomments aktuális állapotát tükrözi. Az „Új nézet létrehozása” feliratú gombbal létrehozhatjuk a már említett, View1 nevet viselő nézettáblát. A nézettábla tartalma megtekinthető a „Nézet” feliratú gomb lenyomása után felbukkanó dialógablakban. A nézettáblát létrehozó SQL utasítás, mely pontosan ebben a formában jelenik meg a syscomments tábla utolsó oszlopában, a következő volt:
viewCommand.CommandText = "CREATE VIEW [View1] AS SELECT ItemName, ItemPrice FROM Table1 WHERE (ItemID >= 1) AND (ItemID <= 5)";
Ahogy látható, egy két-oszlopos nézettáblát hoztunk létre a Table1 táblából, mely az első öt rekordját érinti. A létrehozás után a következő sor kerül a syscomment táblába:
1 2 3 4 5 6 7 8 9 10
485576768 0 1 2 0x4352454154452056494557… 2 0 0 1 CREATE VIEW [View1] AS…
A programban a „Nézet törlése” feliratú gombbal törölhetjük az általunk létrehozott nézetet, valamint az imént létrejött bejegyzést a syscomments rendszertáblából. A törlést egy DropView nevű tárolt eljárás végzi el, mely az adatbázis-létrehozó script lefuttatásával kerül az adatbázisba és ebben a pillanatban a syscomments táblába is. A DropView tárolt eljárással kapcsolatos bejegyzés a következő:
1 2 3 4 5 6 7 8 9 10
1993058136 1 1 2 0x0A4352454154452050… 2 0 0 1 CREATE PROCEDURE DropView AS…

MS SQL Server rendszertáblái cikksorozat