ALTER FULLTEXT INDEX (Transact-SQL)

Ändert die Eigenschaften eines Volltextindex.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

ALTER FULLTEXT INDEX ON table_name
   { ENABLE 
   | DISABLE
   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }
   | ADD ( column_name 
     [ TYPE COLUMN type_column_name ] 
     [ LANGUAGE language_term ] [,...n] )
     [ WITH NO POPULATION ]
   | DROP ( column_name [,...n] )
     [WITH NO POPULATION ] 
   | START { FULL | INCREMENTAL | UPDATE } POPULATION
   | {STOP | PAUSE | RESUME } POPULATION 
   | SET STOPLIST { OFF| SYSTEM | stoplist_name }
     [WITH NO POPULATION] 
   }
[;]

Argumente

  • table_name
    Der Name der Tabelle oder der indizierten Sicht mit den Spalten, die im Volltextindex enthalten sind. Die Angabe des Datenbank- und Tabellenbesitzernamens ist optional.

  • ENABLE | DISABLE
    Teilt SQL Server mit, ob Volltextindexdaten für table_name gesammelt werden sollen. Mit ENABLE wird der Volltextindex aktiviert, mit DISABLE wird er deaktiviert.

    Wenn der Volltextindex deaktiviert ist, werden die Metadaten des Volltextindex weiterhin in den Systemtabellen gespeichert. Falls sich CHANGE_TRACKING im aktivierten Status befindet (automatische oder manuelle Aktualisierung) und der Volltextindex deaktiviert ist, wird der Status der Indizes fixiert. Ein zurzeit ausgeführter Crawlvorgang wird angehalten, und neue Änderungen an den Tabellendaten werden nicht nachverfolgt und an den Index weitergeleitet. Der Volltextindex für table_name kann mit ENABLE erneut aktiviert werden.

  • SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
    Gibt an, ob vom Volltextindex abgedeckte Änderungen (Aktualisierungen, Löschungen oder Einfügungen) an Tabellenspalten von SQL Server an den Volltextindex weitergegeben werden. Datenänderungen durch WRITETEXT und UPDATETEXT werden im Volltextindex nicht wiedergegeben und bei der Änderungsnachverfolgung nicht ausgewählt.

    HinweisHinweis

    Informationen zur Interaktion zwischen der Änderungsnachverfolgung und WITH NO POPULATION finden Sie unter "Hinweise" weiter unten in diesem Thema.

  • MANUAL
    Gibt an, dass die nachverfolgten Änderungen manuell durch einen Aufruf der Transact-SQL-Anweisung ALTER FULLTEXT INDEX … START UPDATE POPULATION weitergeleitet werden (manuelle Auffüllung). Sie können den SQL Server-Agent verwenden, um die Transact-SQL-Anweisung in regelmäßigen Abständen aufzurufen.

  • AUTO
    Gibt an, dass die nachverfolgten Änderungen automatisch weitergegeben werden, wenn Daten in der Basistabelle geändert werden (automatische Auffüllung). Obwohl Änderungen automatisch weitergegeben werden, werden diese Änderungen u. U. nicht sofort im Volltextindex wiedergegeben. AUTO ist die Standardeinstellung.

  • OFF
    Gibt an, dass SQL Server keine Liste der Änderungen an den indizierten Daten speichert.

  • ADD | DROP column_name
    Gibt die Spalten an, die einem Volltextindex hinzugefügt bzw. daraus gelöscht werden sollen. Die Spalten müssen vom Datentyp char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary oder varbinary(max) sein.

    Die DROP-Klausel sollte nur für Spalten verwendet werden, die zuvor für die Volltextindizierung aktiviert wurden.

    Verwenden Sie TYPE COLUMN und LANGUAGE mit der ADD-Klausel, um diese Eigenschaften für column_name festzulegen. Wenn eine Spalte hinzugefügt wird, muss der Volltextindex in der Tabelle erneut aufgefüllt werden, damit die Volltextabfragen in dieser Spalte funktionieren können.

    HinweisHinweis

    Ob der Volltextindex aufgefüllt wird, nachdem eine Spalte hinzugefügt oder entfernt wurde, hängt davon ab, ob die Änderungsnachverfolgung aktiviert und WITH NO POPULATION angegeben wurde. Weitere Informationen finden Sie unter "Hinweise" weiter unten in diesem Thema.

  • TYPE COLUMN type_column_name
    Gibt den Namen der Tabellenspalte type_column_name an, die den Dokumenttyp für ein Dokument vom Typ varbinary, varbinary(max) oder image enthält. Diese Spalte, als Typspalte bezeichnet, enthält eine vom Benutzer angegebene Dateierweiterung (.doc, .pdf, .xls usw.) Die Typspalte muss vom Datentyp char, nchar, varchar oder nvarchar sein.

    Geben Sie TYPE COLUMN type_column_name nur an, wenn column_name eine Spalte vom Typ varbinary, varbinary(max) oder image angibt, in der Daten als Binärdaten gespeichert sind. Andernfalls gibt SQL Server einen Fehler zurück.

    HinweisHinweis

    Bei der Indizierung verwendet das Volltextmodul die Abkürzung in der Typspalte der einzelnen Tabellenzeilen, um den für das Dokument in column_name zu verwendenden Filter für die Volltextsuche zu ermitteln. Der Filter lädt das Dokument als binären Datenstrom, entfernt die Formatierungsinformationen und sendet den Text des Dokuments an die Wörtertrennungskomponente. Weitere Informationen finden Sie unter Filter für die Volltextsuche.

  • LANGUAGE language_term
    Die Sprache der in column_name gespeicherten Daten.

    language_term ist optional und kann als Zeichenfolge, ganzzahliger Wert oder Hexadezimalwert entsprechend dem Gebietsschemabezeichner (Locale Identifier, LCID) einer Sprache angegeben werden. Wird language_term angegeben, wird die entsprechende Sprache auf alle Elemente der Suchbedingung angewendet. Wenn kein Wert angegeben wird, wird die standardmäßige Volltextsprache der SQL Server-Instanz verwendet.

    Mithilfe der gespeicherten Prozedur sp_configure können Sie auf Informationen zur standardmäßigen Volltextsprache der SQL Server-Instanz zugreifen. Weitere Informationen finden Sie unter default full-text language (Option).

    In Form einer Zeichenfolge entspricht language_term dem Wert der alias-Spalte in der syslanguages-Systemtabelle. Die Zeichenfolge muss in einfache Anführungszeichen eingeschlossen werden, wie z. B. 'language_term'. In Form einer ganzen Zahl ist language_term der eigentliche Gebietsschemabezeichner, der die Sprache identifiziert. In Form eines Hexadezimalwerts hat language_term den Wert 0x, gefolgt vom Hexadezimalwert des Gebietsschemabezeichners. Der Hexadezimalwert darf einschließlich führender Nullen acht Ziffern nicht überschreiten.

    Wenn der Wert im Format Doppelbyte-Zeichensatz (Double-Byte Character Set, DBCS) angegeben wird, wird er von SQL Server in Unicode konvertiert.

    Ressourcen, wie die Wörtertrennung und die Wortstammerkennung, müssen für die mit language_term angegebene Sprache aktiviert sein. Wenn die angegebene Sprache von den Ressourcen nicht unterstützt wird, gibt SQL Server einen Fehler zurück.

    Verwenden Sie die neutrale (0x0) Sprachenressource für Nicht-BLOB- und Nicht-XML-Spalten mit Textdaten in mehreren Sprachen oder für Fälle, in denen die Sprache des in der Spalte gespeicherten Texts unbekannt ist. Für Dokumente, die in Spalten vom Typ XML oder BLOB gespeichert sind, wird zum Zeitpunkt der Indizierung die Sprachcodierung innerhalb des Dokuments verwendet. In XML-Spalten wird die Sprache z. B. mit dem xml:lang-Attribut in XML-Dokumenten identifiziert. Bei der Abfrage wird der vorher in language_term angegebene Wert zur Standardsprache, die für Volltextabfragen verwendet wird, es sei denn language_term wird als Teil einer Volltextabfrage angegeben.

  • [ ,...n]
    Gibt an, dass mehrere Spalten für die ADD- oder DROP-Klauseln angegeben werden können. Bei Angabe mehrerer Spalten müssen die Spalten mit Kommas getrennt werden.

  • WITH NO POPULATION
    Gibt an, dass der Volltextindex nach einem ADD- oder DROP-Spaltenvorgang oder einem SET STOPLIST-Vorgang nicht aufgefüllt wird. Der Index wird nur aufgefüllt, wenn der Benutzer einen START...POPULATION-Befehl ausführt.

    Wenn NO POPULATION angegeben ist, füllt SQL Server keinen Index auf. Der Index wird erst aufgefüllt, wenn der Benutzer einen ALTER FULLTEXT INDEX...START POPULATION-Befehl ausgibt. Wenn NO POPULATION nicht angegeben ist, füllt SQL Server den Index auf.

    Falls CHANGE_TRACKING aktiviert und WITH NO POPULATION angegeben ist, gibt SQL Server einen Fehler zurück. Wenn CHANGE_TRACKING aktiviert und WITH NO POPULATION nicht angegeben ist, füllt SQL Server den Index vollständig auf.

    HinweisHinweis

    Weitere Informationen zur Interaktion zwischen der Änderungsnachverfolgung und WITH NO POPULATION finden Sie unter "Hinweise" weiter unten in diesem Thema.

  • START {FULL|INCREMENTAL|UPDATE} POPULATION
    Veranlasst SQL Server, mit der Auffüllung des Volltextindex für table_name zu beginnen. Falls bereits eine Auffüllung des Volltextindex ausgeführt wird, gibt SQL Server eine Warnung zurück und startet keine neue Auffüllung.

    • FULL
      Gibt an, dass jede Zeile der Tabelle für die Volltextindizierung abgerufen werden soll, auch wenn die Zeilen bereits indiziert wurden.

    • INCREMENTAL
      Gibt an, dass nur die Zeilen für die Volltextindizierung abgerufen werden sollen, die seit der letzten Auffüllung geändert wurden. INCREMENTAL kann nur angewendet werden, wenn die Tabelle eine Spalte vom Typ timestamp besitzt. Wenn eine Tabelle im Volltextkatalog keine Spalte vom Typ timestamp besitzt, wird die Tabelle vollständig aufgefüllt.

    • UPDATE
      Gibt die Verarbeitung aller Einfügungen, Aktualisierungen oder Löschungen seit der letzten Aktualisierung des Index für die Änderungsnachverfolgung an. Das Auffüllen der Änderungsnachverfolgung muss in einer Tabelle aktiviert sein, nicht aktiviert sein sollten jedoch die Aktualisierung des Index im Hintergrund und die automatische Änderungsnachverfolgung.

  • {STOP | PAUSE | RESUME } POPULATION
    Beendet eine derzeit ausgeführte Auffüllung oder hält diese an, oder beendet eine angehaltene Auffüllung bzw. setzt diese fort.

    Mit STOP POPULATION wird weder die automatische Änderungsnachverfolgung noch die Aktualisierung des Index im Hintergrund beendet. Verwenden Sie SET CHANGE_TRACKING OFF, um die Änderungsnachverfolgung zu beenden.

    PAUSE POPULATION und RESUME POPULATION können nur für vollständige Auffüllungen verwendet werden. Für andere Auffüllungstypen sind sie nicht relevant, da die anderen Auffüllungen Crawlvorgänge dort fortsetzen, wo sie beendet wurden.

  • SET STOPLIST { OFF| SYSTEM | stoplist_name }
    Ändert die dem Index zuzuordnende Volltextstoppliste.

    • OFF
      Gibt an, dass dem Volltextindex keine Stoppliste zugeordnet wird.

    • SYSTEM
      Gibt an, dass die Standardvolltext-Systemstoppliste STOPLIST für diesen Volltextindex verwendet werden soll.

    • stoplist_name
      Gibt den Namen der Stoppliste an, die dem Volltextindex zugeordnet werden soll.

    HinweisHinweis

    Informationen zur Interaktion zwischen der Änderungsnachverfolgung und WITH NO POPULATION finden Sie unter "Hinweise" weiter unten in diesem Thema.

Hinweise

Für xml-Spalten können Sie einen Volltextindex erstellen, mit dem der Inhalt der XML-Elemente indiziert, das XML-Markup jedoch ignoriert wird. 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 finden Sie unter Volltextindex für eine XML-Spalte.

Interaktionen zwischen der Änderungsnachverfolgung und dem Parameter NO POPULATION

Ob der Volltextindex aufgefüllt wird, hängt davon ab, ob die Änderungsnachverfolgung aktiviert wurde und WITH NO POPULATION in der ALTER FULLTEXT INDEX-Anweisung angegeben ist. In der folgenden Tabelle wird das Ergebnis ihrer Interaktion zusammengefasst.

Änderungsnachverfolgung

WITH NO POPULATION

Ergebnis

Nicht aktiviert

Nicht angegeben

Der Index wird vollständig aufgefüllt.

Nicht aktiviert

Angegeben

Der Index wird erst aufgefüllt, wenn eine Anweisung ALTER FULLTEXT INDEX...START POPULATION ausgegeben wird.

Aktiviert

Angegeben

Ein Fehler wird ausgelöst, und der Index wird nicht geändert.

Aktiviert

Nicht angegeben

Der Index wird vollständig aufgefüllt.

Berechtigungen

Der Benutzer muss über die ALTER-Berechtigung für die Tabelle oder die indizierte Sicht verfügen oder ein Mitglied der festen Serverrolle sysadmin oder der festen Datenbankrollen db_owner oder db_ddladmin sein.

Wenn SET STOPLIST angegeben wird, muss der Benutzer über die REFERENCES-Berechtigung für die Stoppliste verfügen. Der Besitzer der STOPLIST kann diese Berechtigung gewähren. Außerdem muss derjenige, der die REFERENCES-Berechtigung gewährt, ALTER FULLTEXT CATALOG-Berechtigungen besitzen.

HinweisHinweis

Der <legacyBold>public</legacyBold>-Datenbankrolle wird für die Standardstoppliste, die mit SQL Server ausgeliefert wird, die REFERENCE-Berechtigung gewährt.

Beispiele

Im folgenden Beispiel wird der Volltextindex in der JobCandidate-Tabelle der AdventureWorks-Datenbank geändert.

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO

Änderungsverlauf

Aktualisierter Inhalt

Der Abschnitt "Interaktionen zwischen der Änderungsnachverfolgung und dem Parameter NO POPULATION" wurde mit den richtigen Werten in der WITH NO POPULATION-Spalte für die aktivierte Änderungsnachverfolgung aktualisiert.