Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Kezelt Példány
A teljes szöveges index létrehozása és karbantartása magában foglalja az index feltöltését egy feltöltési (más néven feltérképezési) nevű folyamat használatával.
A populáció típusai
A teljes szöveges index a következő sokaságtípusokat támogatja:
- teljes népesség
- Automatikus vagy manuális feltöltés a változáskövetés alapján
- Inkrementális populáció időbélyeg alapján
Teljes népesség
A teljes sokaság során az indexbejegyzések egy tábla vagy indexelt nézet összes sorához készülnek. Egy teljes szöveges index teljes sokasága az alaptábla vagy az indexelt nézet összes sorához létrehozza az indexbejegyzéseket.
Alapértelmezés szerint az SQL Server a létrehozás után teljesen feltölt egy új teljes szöveges indexet.
- Egyfelől a teljes népesség jelentős mennyiségű erőforrást használhat fel. Ezért amikor csúcsidőszakokban teljes szöveges indexet hoz létre, gyakran ajánlott a teljes feltöltést csúcsidőn kívülre késleltetni, különösen akkor, ha a teljes szöveges index alaptáblája nagy.
- Másrészt a teljes szöveges katalógus, amelyhez az index tartozik, nem használható mindaddig, amíg az összes teljes szöveges indexe fel nem töltődik.
Ha teljes szöveges indexet szeretne létrehozni anélkül, hogy azonnal feltöltenél, adja meg a CHANGE_TRACKING OFF, NO POPULATION záradékot a CREATE FULLTEXT INDEX utasításban. Ha CHANGE_TRACKING MANUALad meg, a Full-Text motor nem tölti ki az új teljes szöveges indexet, amíg nem hajt végre ALTER FULLTEXT INDEX utasítást a START FULL POPULATION vagy START INCREMENTAL POPULATION záradék használatával.
Példa – Teljes szöveges index létrehozása teljes sokaság futtatása nélkül
Az alábbi példa egy teljes szöveges indexet hoz létre a Production.Document mintaadatbázis AdventureWorks tábláján. Ez a példa WITH CHANGE_TRACKING OFF, NO POPULATION-t használja a kezdeti teljes népesség késleltetésére.
CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
CREATE FULLTEXT CATALOG AW_Production_FTCat;
CREATE FULLTEXT INDEX ON Production.Document
(
Document --Full-text index column name
TYPE COLUMN FileExtension --Name of column that contains file type information
Language 1033 --1033 is LCID for the English language
)
KEY INDEX ui_ukDoc
ON AW_Production_FTCat
WITH CHANGE_TRACKING OFF, NO POPULATION;
GO
Példa – Teljes adathalmaz futtatása egy táblán
Az alábbi példa egy teljes sokaságot futtat a Production.Document mintaadatbázis AdventureWorks tábláján.
ALTER FULLTEXT INDEX ON Production.Document
START FULL POPULATION;
Populáció a változáskövetés alapján
Választhatóan használhatja a változáskövetést, hogy a teljes szöveges indexet fenntartsa az elsődleges teljes feltöltés után. A változáskövetés kis többletterhelést jelent, mivel az SQL Server olyan táblát tart fenn, amelyben nyomon követi az alaptábla változásait az utolsó sokaság óta. Változáskövetés használata esetén az SQL Server megőrzi az alaptábla vagy indexelt nézet azon sorait, amelyeket frissítések, törlések vagy beszúrások módosítottak. A WRITETEXT és AZ UPDATETEXT használatával végrehajtott adatmódosítások nem jelennek meg a teljes szöveges indexben, és nem jelennek meg a változáskövetésben.
Jegyzet
Az időbélyeget oszlopot tartalmazó táblák esetében a változáskövetés helyett növekményes sokaságot használhat.
Ha engedélyezi a változáskövetést az index létrehozása során, az SQL Server a létrehozás után azonnal feltölti az új teljes szöveges indexet. Ezt követően a rendszer nyomon követi és propagálja a módosításokat a teljes szöveges indexre.
Változáskövetés engedélyezése
A változáskövetésnek két típusa van:
- Automatikus (
CHANGE_TRACKING AUTObeállítás). Az automatikus változáskövetés az alapértelmezett viselkedés. - Manuális (
CHANGE_TRACKING MANUALbeállítás).
A változáskövetés típusa az alábbiak szerint határozza meg a teljes szöveges index feltöltését:
Automatikus kitöltés
Alapértelmezés szerint, vagy ha megadja a
CHANGE_TRACKING AUTOértéket, a Full-Text rendszer automatikus kitöltést használ a teljes szöveges indexben. A kezdeti teljes adatfeltöltés után a rendszer nyomon követi a változtatásokat, ahogy az adatok módosulnak az alaptáblában, és a nyomon követett változásokat automatikusan továbbítja. A teljes szöveges index a háttérben frissül, ezért előfordulhat, hogy a propagált módosítások nem jelennek meg azonnal az indexben.Változások nyomon követésének megkezdése automatikus populációs
CREATE FULLTEXT INDEX ... VÁLTOZÁSKÖVETÉS AUTO
ALTER FULLTEXT INDEX ... SET automatikus CHANGE_TRACKING
Példa – Teljes szöveges index módosítása az automatikus változáskövetés használatára
Az alábbi példa aHumanResources.JobCandidatemintaadatbázisAdventureWorkstáblázatának teljes szöveges indexét módosítja a változáskövetés automatikus sokaságtal való használatához.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate SET CHANGE_TRACKING AUTO; GOmanuális populációs
Ha CHANGE_TRACKING MANUÁLIS értéket ad meg, a Full-Text motor manuális sokaságot használ a teljes szöveges indexen. A kezdeti teljes sokaság befejeződése után a rendszer nyomon követi a módosításokat, amint az adatok módosulnak az alaptáblában. A program azonban nem propagálja őket a teljes szöveges indexbe, amíg nem hajt végre egy ALTER FULLTEXT INDEX ... START UPDATE POPULATION utasítás. Az SQL Server Agent használatával rendszeresen meghívhatja ezt a Transact-SQL utasítást.
A változások követésének megkezdése manuális adatbevitel segítségével
CREATE FULLTEXT INDEX ... VÁLTOZÁSKÖVETÉSSEL MANUÁLISAN
ALTER FULLTEXT INDEX ... SET VÁLTOZÁSKÖVETÉS KÉZIKÖNYV
Példa – Teljes szöveges index létrehozása manuális változáskövetési módszerrel
Az alábbi példa egy teljes szöveges indexet hoz létre, amely aHumanResources.JobCandidatemintaadatbázisAdventureWorkstáblázatában manuális sokaságú változáskövetést használ.USE AdventureWorks; GO CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID); CREATE FULLTEXT CATALOG ft AS DEFAULT; CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand WITH CHANGE_TRACKING=MANUAL; GOPélda – Futtasson le egy manuális populációt
Az alábbi példa egy manuális sokaságot futtat aHumanResources.JobCandidatemintaadatbázisAdventureWorkstáblázatának változáskövetésű teljes szöveges indexén.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION; GO
Változáskövetés letiltása
CREATE FULLTEXT INDEX ... CHANGE_TRACKING KIKAPCSOLT
ALTER FULLTEXT INDEX ... SET CHANGE_TRACKING KI
Növekményes népesség időbélyeg alapján
A növekményes sokaság egy alternatív mechanizmus a teljes szöveges index manuális feltöltéséhez. Ha egy táblázat nagy mennyiségű beszúrást tapasztal, a növekményes sokaság használata hatékonyabb lehet, ha manuális sokaságot használ.
Növekményes feltöltést futtathat olyan teljes szöveges indexekhez, amelyeknél a CHANGE_TRACKING MANUÁLIS vagy KI állapotra van állítva.
Az növekményes adatpopuláció követelménye az, hogy az indexelt táblának rendelkeznie kell időbélyeg adattípusú oszloppal. Ha nem létezik időbélyeg oszlop, inkrementális feltöltés nem hajtható végre.
Az SQL Server a időbélyeg-oszlop használatával azonosítja a legutóbbi adatfeltöltés óta megváltozott sorokat. A növekményes frissítés ezután frissíti a teljes szöveges indexet a hozzáadott, törölt vagy módosított sorokhoz, amelyek az utolsó indexelés után kerültek változtatásra, vagy amíg az utolsó indexelés folyamatban volt. A populáció végén a Full-Text motor rögzít egy új időbélyeg értéket. Ez az érték az SQL Gatherer által talált legnagyobb időbélyeg érték. Ezt az értéket a rendszer a következő növekményes sokaság indításakor fogja használni.
Bizonyos esetekben a növekményes sokaság kérése teljes sokaságot eredményez.
- Ha egy táblán növekményes feltöltést kér időbélyeg oszlop nélkül, az teljes feltöltési műveletet eredményez.
- Ha a teljes szöveges index első sokasága növekményes sokaság, akkor az összes sort indexeli, így teljes sokaságnak felel meg.
- Ha a táblázat teljes szöveges indexét érintő metaadatok az utolsó sokaság óta megváltoztak, a növekményes sokaságkérések teljes sokaságként lesznek implementálva. Ide tartoznak az oszlopok, indexek vagy teljes szöveges indexdefiníciók módosítása által okozott metaadat-módosítások.
Növekményes feltöltés végrehajtása
Növekményes sokaság futtatásához hajtsa végre a ALTER FULLTEXT INDEX utasítást a START INCREMENTAL POPULATION záradék használatával.
Inkrementális feltöltés ütemezésének létrehozása vagy módosítása
A Management Studióban az Object Explorerben bontsa ki a kiszolgálót.
Bontsa ki a(z) adatbázisokat, majd bontsa ki azt az adatbázist, amely tartalmazza a teljes szöveges indexet.
Bontsa ki Táblák.
Kattintson a jobb gombbal arra a táblára, amelyen a teljes szöveges index definiálva van, válassza Full-Text index, majd a Full-Text index helyi menüben kattintson a Tulajdonságokparancsra. Ekkor megnyílik a Teljes szöveges index tulajdonságai párbeszédpanel.
Fontos
Ha az alaptábla vagy nézet nem tartalmazza a időbélyeg adattípus oszlopát, a növekményes sokaság nem lehetséges.
A Lap kiválasztása panelen válassza ki a Ütemezéseklehetőséget.
Ezen a lapon ütemezéseket hozhat létre vagy kezelhet egy SQL Server Agent-feladathoz, amely növekményes táblapopulációt indít el az alaptáblán vagy a teljes szöveges index indexelt nézetén.
A lehetőségek a következők:
Egy új ütemezés létrehozásához kattintson az Újgombra.
Ekkor megnyílik az Új Full-Text Indexelési táblázat ütemezése párbeszédpanel, ahol ütemezést hozhat létre. Az ütemezés mentéséhez kattintson az OKgombra.
Fontos
Egy SQL Server-ügynökfeladat (növekményes táblapopuláció indítása database_name.table_name) az Full-Text Index tulajdonságai párbeszédpanelről való kilépés után új ütemezéshez van társítva. Ha több ütemezést hoz létre ugyanahhoz a teljes szöveges indexhez, mindegyik ugyanazt a feladatot használja.
A meglévő ütemezés módosításához válassza ki a meglévő ütemezést, majd kattintson a Szerkesztésgombra.
Ekkor megnyílik az Új Full-Text Indexelési táblázat ütemezése párbeszédpanel, ahol módosíthatja az ütemezést.
Jegyzet
Az SQL Server Agent-feladat módosításáról további információt Feladat módosításacímű témakörben talál.
Meglévő ütemezés eltávolításához jelölje ki a meglévő ütemezést, majd kattintson a Törlésgombra.
Válassza OKlehetőséget.
Teljes szöveges sokaság hibáinak elhárítása (bejárás)
Ha egy bejárás során hiba történik, a Full-Text Keresési bejárás naplózási létesítmény létrehoz és karbantart egy bejárási naplót, amely egy egyszerű szöveges fájl. Minden bejárási napló egy adott teljes szöveges katalógusnak felel meg. Alapértelmezés szerint egy adott példány bejárási naplói (ebben a példában az alapértelmezett példány) %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG mappában találhatók.
A bejárási naplófájl a következő elnevezési sémát követi:
SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]
A bejárási naplófájl nevének változó részei a következők.
- < DatabaseID> – Az adatbázis azonosítója. < dbid> egy ötjegyű szám, kezdő nullákkal.
- < FullTextCatalogID> – Teljes szöveges katalógusazonosító. < catid> egy ötjegyű szám kezdő nullákkal.
- < n> – Egy egész szám, amely azt jelzi, hogy ugyanannak a teljes szöveges katalógusnak egy vagy több bejárási naplója létezik.
A SQLFT0000500008.2 például egy adatbázis bejárási naplófájlja, amelynek adatbázis-azonosítója = 5, a teljes szöveges katalógus azonosítója pedig = 8. A fájlnév végén lévő 2 azt jelzi, hogy az adatbázis-/katalóguspár két bejárási naplófájlt tartalmaz.