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

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

forráskód letöltése
Az MS SQL nagyszerű lehetősége az ún. Full-Text Catalog, amely szöveges mezőkben teszi lehetővé sztringek többféle szempont szerinti keresését. Ezzel a lehetőséggel akár hangzás szerint is kereshetünk szavakat, ráadásul azt is megtehetjük, hogy egy adott sztringet nem csak egy, hanem akár több oszlopban is keressünk egyszerre. Összesen öt olyan tárolt eljárás van, amelyek a Full-Text Catalog kezelését teszik lehetővé. Ebben a részben ezeket vizsgáljuk meg.
sp_fulltext_1.sql: A Full-Text Catalog engedélyezése
Ahhoz, hogy egyáltalán használhassuk egy adatbázisban a Full-Text Catalog-ot, engedélyeznünk kell azt. Ezt az sp_fulltext_database eljárással tehetjük meg.
sp_fulltext_database [@action =] 'action'
Az action paraméterben adhatjuk meg, hogy engedélyezzük, vagy letiltjuk-e a Full-Text Catalog használatát. Az action paraméter értékei az alábbiak lehetnek:
  • enable: engedélyezi a Full-Text Catalog használatát;
  • disable: letiltja a Full-Text Catalog-ot;
use NorthWind;
exec sp_fulltext_database Enable;
sp_fulltext_2.sql: A Full-Text Catalog létrehozása
A következő lépés, hogy létrehozzunk egy Full-Text Catalog-ot. Egy adatbázisban egyszerre akár több is lehet, bár a legtöbbször elég egy is. A katalógust létrehozni az sp_fulltext_catalog eljárással tudjuk. Ezzel az eljárással nem csak létrehozni, hanem indexelni is tudjuk a katalógust.
sp_fulltext_catalog [ @ftcat = ] 'fulltext_catalog_name' , 
    [ @action = ] 'action' 
    [ , [ @path = ] 'root_directory' ]
Az eljárás paraméterei:
ftcat
Ebben a paraméterben kell megadni a katalógus nevét. Ennek az adatbázison belül egyedinek kell lennie, és meg kell felelnie az elnevezési konvencióknak.
action
Ebben a paraméterben adhatjuk meg, hogy milyen műveletet akarunk végezni a katalógussal. A lehetséges értékek (műveletek) az alábbi táblázatban láthatók:
Érték Leírás
Create Létrehoz egy új, üres katalógust.
Drop Törli a katalógust és a hozzá tartozó fájlokat. Csak akkor lehet törölni a katalógust, ha már egyik tábla sem használja (lásd sp_fulltext_table).
start_incremental Elkezdi a katalógus indexelését, de csak a legutóbbi indexelés óta végrehajtott módosításokat indexeli le. Éppen ezért ez az indexelés viszonylag gyors.
start_full Teljesen újraindexeli a katalógust. Nagyobb katalógusok esetén ez akár több percig is eltarthat.
Stop Leállítja az indexelést. Nem kapunk figyelmeztetést, ha nem volt indexelés folyamatban.
Rebuild Teljesen újraépíti a katalógust. Tulajdonképpen végigcsinálja azokat a műveleteket, amiket egy új katalógus létrehozásakor. Az újraépítés után újra kell indexelni a katalógust.
path
Ebben a paraméterben adhatjuk meg a katalógushoz tartozó fájlok elérési útvonalát. Nem kötelező megadni.
sp_fulltext_3.sql: Egy tábla adott mezőinek felvétele a katalógusba
Miután elkészült a katalógusunk, felvehetjük az adatbázis táblák szöveges mezőit, persze csak azokat, amelyekre alkalmazni akarjuk a Full-Text Catalog-ot. Az ehhez szükséges tárolt eljárás az sp_fulltext_table.
sp_fulltext_table [ @tabname = ] 'qualified_table_name' 
    , [ @action = ] 'action' 
    [ , [ @ftcat = ] 'fulltext_catalog_name' 
    , [ @keyname = ] 'unique_index_name' ]
Az eljárás paraméterei:
tabname
Ebben a paraméterben adhatjuk meg a tábla nevét.
action
Ebben a paraméterben most is különböző műveleteket adhatunk meg. Ezek a következők:
Művelet Leírás
Create Létrehozza a full-text katalógusban a táblahivatkozásokat.
Drop Törli a tábla hivatkozásait a full-text katalógusból. Előtte a tábla mezőit törölni kell a full-text katalógusból.
Activate Engedélyezi full-text használatát az adott táblában, ha az előtte le volt tiltva. Csak akkor lehet aktiválni, ha a tábla legalább egy mezője szerepel a katalógusban.
Deactivate Letiltja a full-text használatát az adott táblában.
start_change_tracking Elkezdi a növekményes (gyors) indexelést valamint a változtatások nyomon követését. Ha a katalógus még nem lett felépítve, akkor teljes indexelést végez.
stop_change_tracking Leállítja a full-text katalógus változásainak nyomon követését.
update_index Véglegesíti a nyomon követés során végzett változtatásokat a full-text indexben.
start_background_updateindex Ugyanaz, mint az update_index, de a művelet a háttérben történik.
stop_background_updateindex Leállítja a start_background_updateindex műveletet.
start_full A teljes full-text katalógust újraindexeli.
start_incremental Elindítja növekményes indexelést. Ha a katalógus már volt indexelve, akkor ez sokkal gyorsabb indexelést tesz lehetővé, mivel csak a módosításokat indexeli le.
Stop Leállítja a teljes vagy a növekményes indexelést.
ftcat
A full-text katalógus nevét kell megadnunk ebben a paraméterben.
keyname
A tábla full-text indexének létrehozásakor (action=’create’) ebben a paraméterben kell megadnunk az index nevét.
sp_fulltext_4.sql: Tábla oszlopának felvétele a full-text katalógusba
Egy tábla oszlopát az sp_fulltext_column eljárással tudjuk felvenni a katalógusba.
sp_fulltext_column [ @tabname = ] 'qualified_table_name' , 
    [ @colname = ] 'column_name' , 
    [ @action = ] 'action' 
    [ , [ @language = ] 'language' ] 
    [ , [ @type_colname = ] 'type_column_name' ]
Az eljárás paraméterei:
tabname
Ebben a paraméterben kell megadnunk az oszlopot tartalmazó tábla nevét.
colname
Ebben a paraméterben adhatjuk meg az oszlop nevét. Csak karakteres, vagy image (kép) típusú mező adható meg. A kép típusú mezőből is csak a szöveges adatokat veszi figyelembe.
action
Az eljárással két művelet végezhető el:
  • add: az oszlop hozzáadása a full-text katalógushoz;
  • drop: az oszlop törlése a katalógusból.
language
Az oszlopban lévő szöveges adatok nyelvét adhatjuk meg ebben a paraméterben. Sajnos a magyar nyelv közvetlenül nem támogatott, helyette a „Neutral” értéket kell megadni.
type_colname
Ebben a paraméterben megadhatjuk az oszlop típusának nevét. Ezt csak akkor kell megtennünk, ha az oszlop image típusú.
sp_fulltext_7.sql: A Full-Text catalog tulajdonságainak megváltoztatása
A katalógus tulajdonságait az sp_fulltext_service eljárással lehetséges.
sp_fulltext_service [@action =] 'action' [ , [ @value = ] 'value' ]
Az eljárás paraméterei:
action
Ebben a paraméterben adhatjuk meg azt a tulajdonságot amit módosítani szeretnénk:
Művelet Leírás
resource_usage A Microsoft Search Engine által felhasznált erőforrások mennyiségének beállítása.
clean_up Eltávolítja azokat a katalógus fájlokat, amelyek már nem tartalmaznak érvényes adatokat.
connect_timeout Megadhatjuk, hogy a Microsoft Search Service hány másodpercig várjon a kapcsolat létrehozásakor, mielőtt a kapcsolatot sikertelenné nyilvánítaná.
data_timeout Megadhatjuk, hogy a Microsoft Search Service mennyi ideig várjon az adatokra, mielőtt a lekérdezést sikertelennek nyilvánítaná.
value
Az action paraméterben megadott tulajdonság értékét adhatjuk meg ebben a paraméterben. Ezeket az alábbi táblázatban foglaljuk össze:
Tulajdonság Lehetséges értékek
resource_usage 1From 1-től (háttérben történik) 5-ig (dedikált), az alapértelmezett 3.
clean_up NULL
connect_timeout 1-től 32767-ig (másodperc)
data_timeout 1-től 32767-ig (másodperc)

MS SQL tárolt eljárások cikksorozat