Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Dieser Artikel beschreibt, wie man Volltextindizes in der SQL Server-Datenbank-Engine erstellt, ausfüllt und verwaltet. Ein Volltextindex unterstützt die Suche nach Schlüsselworten und Sprachen über zeichenbasierte Spalten in einer Tabelle.
Erstellen eines Volltextkatalogs
Bevor Sie einen Volltextindex erstellen können, benötigen Sie einen Volltextkatalog. Der Katalog ist ein virtueller Container für ein oder mehrere Volltextindizes. Weitere Informationen finden Sie unter Erstellen und verwalten Full-Text Kataloge.
Erstellen, Ändern oder Löschen eines Volltextindexes
Auffüllen eines Volltextindexes
Der Vorgang, bei dem ein Volltextindex erstellt und verwaltet wird, wird als Auffüllung (oder Durchforstung) bezeichnet. Es gibt drei Typen der Auffüllung eines Volltextindexes:
- Vollständige Befüllung
- Auffüllung basierend auf der Änderungsnachverfolgung
- Inkrementelle Auffüllung basierend auf einem Zeitstempel
Weitere Informationen finden Sie unter Auffüllen von Volltextindizes.
Anzeigen der Eigenschaften eines Volltextindexes
Anzeigen der Eigenschaften eines Volltextindexes mit Transact-SQL
| Katalogsicht oder dynamische Verwaltungssicht | Beschreibung |
|---|---|
| sys.fulltext_index_catalog_usages | Gibt eine Zeile für jeden Verweis zwischen Volltextkatalog und Volltextindex zurück. |
| sys.fulltext_index_columns | Enthält eine Zeile für jede Spalte, die Teil eines Volltextindexes ist. |
| sys.fulltext_index_fragments | Ein Volltextindex verwendet interne Tabellen, sogenannte Volltextindexfragmente, um die invertierten Indexdaten zu speichern. Sie können diese Ansicht verwenden, um die Metadaten dieser Fragmente abzufragen. Diese Sicht enthält eine Zeile für jedes Volltextindexfragment in jeder Tabelle, die einen Volltextindex enthält. |
| sys.fulltext_indexes | Enthält eine Zeile pro Volltextindex eines Tabellenobjekts. |
| sys.dm_fts_index_keywords | Gibt Informationen zum Inhalt eines Volltextindex für die angegebene Tabelle zurück. |
| sys.dm_fts_index_keywords_by_document | Gibt Informationen zum Inhalt auf Dokumentebene eines Volltextindex für die angegebene Tabelle zurück. Ein Schlüsselwort kann in mehreren Dokumenten angezeigt werden. |
| sys.dm_fts_index_population | Gibt Informationen zu den aktuell ausgeführten Volltextindexauffüllungen zurück. |
Anzeigen von Eigenschaften eines Volltextindexes mit SQL Server Management Studio
Hinweis
Verwenden Sie Transact-SQL, um Eigenschaften von Volltextindizes für Azure SQL-Datenbanken anzuzeigen.
Erweitern Sie in Management Studio im Objekt-Explorer den Server.
Erweitern Sie Datenbanken, und erweitern Sie dann die Datenbank, die den Volltextindex enthält.
Erweitern Sie Tabellen.
Klicken Sie mit der rechten Maustaste auf die Tabelle, für die der Volltextindex definiert ist. Wählen Sie Volltextindex, und klicken Sie dann im Kontextmenü Volltextindex auf Eigenschaften. Diese Aktion öffnet das Dialogfeld Eigenschaften des Volltextindexes .
Im Seitenauswahlfenster wählen Sie eine der folgenden Seiten aus:
Seite Beschreibung Allgemein Zeigt die grundlegenden Eigenschaften des Volltextindex an. Diese Eigenschaften umfassen mehrere veränderbare Eigenschaften und viele unveränderliche Eigenschaften wie Datenbanknamen, Tabellenname und den Namen der Volltextschlüsselspalte. Die änderbaren Eigenschaften lauten:
Volltextindex-Stoppliste
Volltextindizierung aktiviert
Änderungsnachverfolgung
Liste der SucheigenschaftenSpalten Zeigt die Tabellenspalten an, die für die Volltextindizierung verfügbar sind. Die ausgewählte Spalte bzw. die Spalten werden volltextindiziert. Sie können beliebig viele verfügbare Spalten auswählen und in den Volltextindex aufnehmen. Weitere Informationen finden Sie unter Auffüllen von Volltextindizes. Zeitpläne Verwenden Sie diese Seite, um Zeitpläne für einen SQL Server-Agent-Auftrag zu erstellen oder zu verwalten, der eine inkrementelle Tabellenauffüllung für die Auffüllungen des Volltextindexes beginnt. Weitere Informationen finden Sie unter Auffüllen von Volltextindizes.
Hinweis: Nachdem Sie das Dialogfeld Volltextindexeigenschaften geschlossen haben, wird jeder neu erstellte Zeitplan einem SQL Server-Agent-Auftrag zugeordnet (Start Incremental Table Population on database_name.table_name).Wählen Sie OK aus, um vorgenommene Änderungen zu speichern und das Dialogfeld Volltextindexeigenschaften zu schließen.
Anzeigen der Eigenschaften von indizierten Tabellen und Spalten
Man kann mehrere Transact-SQL Funktionen verwenden, zum Beispiel OBJECTPROPERTYEX, um den Wert verschiedener Volltext-Indexierungseigenschaften zu erhalten. Diese Informationen sind für die Verwaltung und Problembehandlung der Volltextsuche hilfreich.
Die folgende Tabelle listet die Volltexteigenschaften zu indizierten Tabellen und Spalten sowie deren zugehörige Transact-SQL-Funktionen auf.
| Eigenschaft | Beschreibung | Funktion |
|---|---|---|
| FullTextTypeColumn |
TYPE COLUMN in der Tabelle, die die Informationen zum Dokumenttyp der Spalte enthält. |
COLUMNPROPERTY |
| IsFulltextIndexed | Spezifiziert, ob eine Spalte für die Volltextindexierung aktiviert ist. | COLUMNPROPERTY |
| IsFulltextKey | Gibt an, ob der Index der Volltextschlüssel für eine Tabelle ist. | INDEXPROPERTY |
| TableFulltextBackgroundUpdateIndexOn | Gibt an, ob für eine Tabelle das Update von Volltextindizes im Hintergrund aktiviert wurde. | OBJECTPROPERTYEX |
| TableFulltextCatalogId | ID des Volltextkatalogs, in dem die Daten des Volltextindex für die Tabelle gespeichert sind. | OBJECTPROPERTYEX |
| TableFulltextChangeTrackingOn | Gibt an, ob für eine Tabelle die Volltext-Änderungsnachverfolgung aktiviert ist. | OBJECTPROPERTYEX |
| TableFulltextDocsProcessed | Die Anzahl der seit dem Start der Volltextindizierung verarbeiteten Zeilen. | OBJECTPROPERTYEX |
| TableFulltextFailCount | Die Anzahl von Zeilen, für die die Volltextsuche keinen Index erstellt hat. | OBJECTPROPERTYEX |
| TableFulltextItemCount | Die Anzahl von Zeilen, für die ein Volltextindex erfolgreich erstellt wurde. | OBJECTPROPERTYEX |
| TableFulltextKeyColumn | Die Spalten-ID der Volltextspalte für den eindeutigen Schlüssel. | OBJECTPROPERTYEX |
| TableFullTextMergeStatus | Gibt an, ob eine Tabelle über einen Volltextindex verfügt, der gerade zusammengeführt wird. | OBJECTPROPERTYEX |
| TableFulltextPendingChanges | Anzahl der zu verarbeitenden ausstehenden Änderungsnachverfolgungseinträge. | OBJECTPROPERTYEX |
| TableFulltextPopulateStatus | Der Auffüllungsstatus einer Volltexttabelle. | OBJECTPROPERTYEX |
| TableHasActiveFulltextIndex | Gibt an, ob eine Tabelle über einen aktiven Volltextindex verfügt. | OBJECTPROPERTYEX |
Informationen zur Volltextschlüsselspalte abrufen
Typischerweise verknüpft man das Ergebnis von CONTAINSTABLE oder FREETEXTTABLE zeilenwertigen Funktionen mit der Basistabelle. In solchen Fällen müssen Sie den Namen der eindeutigen Schlüsselspalte kennen. Man kann prüfen, ob ein bestimmter eindeutiger Index als Volltextschlüssel verwendet wird, und die Identifikatorin der Volltextschlüsselspalte erhalten.
Überprüfen, ob ein bestimmter eindeutiger Index als Volltextschlüsselspalte verwendet wird
Verwenden Sie eine SELECT-Anweisung, um die INDEXPROPERTY-Funktion aufzurufen. Im Funktionsaufruf verwenden Sie die OBJECT_ID Funktion, um den Namen der Tabelle (table_name) in die Tabellen-ID umzuwandeln, geben Sie den Namen eines eindeutigen Index für die Tabelle an und geben Sie die IsFulltextKey-Indexeigenschaft wie folgt an:
SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey');
Diese Anweisung gibt 1 zurück, wenn der Index die Eindeutigkeit für die Volltext-Schlüsselspalte erzwingt, und 0, wenn dies nicht der Fall ist.
Beispiel
Das folgende Beispiel prüft, ob der PK_Document_DocumentNode Index die Eindeutigkeit für die Volltextschlüsselspalte erzwingt:
USE AdventureWorks2025;
GO
SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode', 'IsFulltextKey');
Dieses Beispiel gibt 1 zurück, wenn der PK_Document_DocumentNode Index die Eindeutigkeit für die Volltextschlüsselspalte erzwingt. Andernfalls gibt es 0 oder NULLzurück.
NULL Das bedeutet, dass du einen ungültigen Indexnamen benutzt, der Indexname nicht mit der Tabelle übereinstimmt, die Tabelle nicht existiert und so weiter.
Suchen Sie den Bezeichner der Volltext-Schlüsselspalte
Jede Volltext-fähige Tabelle hat eine Spalte, die eindeutige Zeilen für die Tabelle erzwingt (die eindeutige Schlüsselspalte). Die TableFulltextKeyColumn Eigenschaft, die aus der OBJECTPROPERTYEX Funktion gewonnen wird, enthält die Spalten-ID der eindeutigen Schlüsselspalte.
Um diese Identifikatorin zu erhalten, verwenden Sie eine SELECT Anweisung, die die OBJECTPROPERTYEX Funktion aufruft. Verwenden Sie die Funktion OBJECT_ID , um den Namen der Tabelle (table_name) in die Tabellen-ID umzuwandeln und die TableFulltextKeyColumn Eigenschaft wie folgt anzugeben:
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn') AS 'Column Identifier';
Beispiele
Das folgende Beispiel gibt den Bezeichner der Volltextschlüsselspalte oder NULL zurück.
NULL bedeutet, dass du einen ungültigen Indexnamen benutzt, der Indexname nicht zur Tabelle passt, die Tabelle nicht existiert usw.
USE AdventureWorks2025;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
Das folgende Beispiel zeigt, wie man die Identifikatorin der eindeutigen Schlüsselspalte verwendet, um den Namen der Spalte zu erhalten.
USE AdventureWorks2025;
GO
DECLARE @key_column AS SYSNAME;
SET @key_column = COL_NAME(
OBJECT_ID('Production.Document'),
OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn')
);
SELECT @key_column AS 'Unique Key Column';
GO
Dieses Beispiel gibt eine Ergebnismengenspalte mit dem Namen Unique Key Column zurück, die eine einzelne Zeile mit dem Namen der eindeutigen Schlüsselspalte der Tabelle Document, DocumentNode, anzeigt. Wenn diese Abfrage einen ungültigen Indexnamen enthielt, der Indexname nicht der Tabelle entsprach, die Tabelle nicht existierte und so weiter, gibt sie zurück.NULL
Indizierung von varbinary(max)- und XML-Spalten
Wenn Sie für eine varbinary(max)-, varbinary- oder xml-Spalte einen Volltextindex erstellen, können Sie sie wie jede andere volltextindizierte Spalte mithilfe der Volltextprädikate (CONTAINS und FREETEXT) und Funktionen (CONTAINSTABLE und FREETEXTTABLE) abfragen.
Indizieren von varbinary(max)- oder varbinary-Daten
In einer einzelnen varbinary(max) - oder varbinary -Spalte können viele Dokumenttypen gespeichert werden. Die Datenbank-Engine unterstützt jeden Dokumenttyp, für den ein Filter installiert und im Betriebssystem verfügbar ist. Der Dokumenttyp jedes Dokuments wird durch die Dateierweiterung des Dokuments identifiziert. Zum Beispiel verwendet die Volltextsuche für eine .doc Dateiendung den Filter, der Microsoft Word-Dokumente unterstützt. Eine Liste der verfügbaren Dokumenttypen erhalten Sie, indem Sie die sys.fulltext_document_types -Katalogsicht abfragen.
Beachten Sie, dass die Volltext-Engine vorhandene Filter nutzen kann, die im Betriebssystem installiert sind. Bevor die Filter, Wörtertrennungen und Stemmer des Betriebssystems verwendet werden können, müssen Sie diese wie folgt in der Serverinstanz laden:
EXECUTE sp_fulltext_service
@action = 'load_os_resources',
@value = 1;
Zum Erstellen eines Volltextindexes für eine varbinary(max)-Spalte benötigt die Volltext-Engine Zugriff auf die Dateierweiterungen der Dokumente in der varbinary(max)-Spalte. Sie müssen diese Informationen in einer Tabellenspalte, einer sogenannten Typspalte, speichern, die Sie mit der varbinären (max)- Spalte im Volltextindex verknüpfen. Beim Indizieren eines Dokuments verwendet die Volltext-Engine die Dateierweiterung in der Typspalte, um den richtigen Filter zu ermitteln.
Indizieren von XML-Daten
In einer xml -Datentypspalte werden ausschließlich XML-Dokumente und -Fragmente gespeichert. Für die Dokumente wird immer der XML-Filter verwendet. Ein Typspalte ist daher nicht erforderlich. Bei xml -Spalten indiziert der Volltextindex den Inhalt der XML-Elemente und ignoriert die XML-Markups. Attributwerte werden volltextindiziert, sofern es sich nicht um numerische Werte handelt. Elementtags werden als Tokenbegrenzungen verwendet. Wohlgeformte XML- oder HTML-Dokumente und -Fragmente in mehreren Sprachen werden unterstützt.
Weitere Informationen zur Indexierung und Abfrage einer XML-Spalte finden Sie unter Volltextsuche mit XML-Spalten.
Deaktivieren oder Reaktivieren der Volltextindizierung für eine Tabelle
In der Datenbank-Engine sind alle vom Benutzer erstellten Datenbanken standardmäßig mit Volltext aktiviert. Zudem wird eine einzelne Tabelle automatisch für die Volltextindizierung aktiviert, sobald ein Volltextindex für die Tabelle erstellt wird und dem Index eine Spalte hinzugefügt wird. Eine Tabelle wird für die Volltextindizierung automatisch deaktiviert, wenn die letzte Spalte aus dem Volltextindex der Tabelle entfernt wird.
In einer Tabelle mit Volltextindex können Sie eine Tabelle manuell deaktivieren oder wieder aktivieren, indem Sie SQL Server Management Studio verwenden.
Erweitern Sie die Servergruppe, erweitern Sie Datenbanken, und erweitern Sie die Datenbank, die die Tabelle enthält, die für Volltextindizierung aktiviert werden soll.
Erweitern Sie Tabellen, und klicken Sie mit der rechten Maustaste auf die Tabelle, die Sie deaktivieren oder für Volltextindizierung erneut aktivieren möchten.
Wählen Sie Volltextindexaus, und klicken Sie anschließend auf Volltextindizierung deaktivieren oder Volltextindizierung aktivieren.
Entfernen eines Volltextindexes aus einer Tabelle
Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Tabelle mit dem Volltextindex, den Sie löschen möchten
Wählen Sie Volltextindex löschenaus.
Klicken Sie auf OK , wenn Sie aufgefordert werden, das Löschen des Volltextindexes zu bestätigen.