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. In der Tabelle werden Volltextabfragen nicht unterstützt, während der Index deaktiviert wird.

    Das Deaktivieren eines Volltextindexes ermöglicht Ihnen, die Änderungsnachverfolgung zu deaktivieren, den Volltextindex jedoch beizubehalten, den Sie jederzeit mittels ENABLE reaktivieren können. Wenn der Volltextindex deaktiviert ist, werden die Metadaten des Volltextindexes 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 eingefroren. Ein zurzeit ausgeführter Durchforstungsvorgang wird angehalten, und neue Änderungen an den Tabellendaten werden nicht nachverfolgt und an den Index weitergeleitet.

  • 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 in 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 wurde und WITH NO POPULATION angegeben ist. 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, ganze Zahl 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. Wird kein Wert angegeben, 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 gesetzt werden, wie z. B. 'language_term'. In Form einer ganzen Zahl ist language_term der eigentliche Gebietsschemabezeichner, der die Sprache identifiziert. In Form eines Hexadezimalwertes ist language_term gleich 0x, gefolgt vom Hexadezimalwert des Gebietsschemabezeichners. Der Hexadezimalwert darf acht Ziffern nicht überschreiten, einschließlich führender Nullen.

    Wird der Wert im Format Doppelbyte-Zeichensatz (Double-Byte Character Set, DBCS) angegeben, 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. Falls 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 XML- oder BLOB-Spalten gespeichert werden, wird die Sprachcodierung im Dokument bei der Indizierung verwendet. In XML-Spalten wird die Sprache z. B. mit dem xml:lang-Attribut in XML-Dokumenten identifiziert. Zur Abfragezeit wird der Wert, der vorher in language_term angegeben wurde, die 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
    Teilt SQL Server mit, dass die Auffüllung des Volltextindex für table_name beginnen kann. 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 dem letzten Auffüllen 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 zurzeit 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 Durchforstungsvorgänge dort fortsetzen, wo sie beendet wurden.

  • SET STOPLIST { OFF| SYSTEM | stoplist_name }
    Ändert die Volltextstoppliste, die dem Index zugeordnet ist, wenn überhaupt.

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

    • 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.

    Weitere Informationen finden Sie unter Stoppwörter und Stopplisten.

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 nicht aufgefüllt, bevor 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.

Weitere Informationen zum Auffüllen von Volltextindizes finden Sie unter Auffüllen eines Volltextindexes.

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 public-Datenbankrolle wird für die Standardstoppliste, die mit SQL Server ausgeliefert wird, die REFERENCE-Berechtigung gewährt.

Beispiele

A. Festlegen der manuellen Änderungsnachverfolgung

Im folgenden Beispiel wird die manuelle Änderungsnachverfolgung für den Volltextindex für die JobCandidate-Tabelle der AdventureWorks2008R2-Beispieldatenbank festgelegt.

USE AdventureWorks2008R2;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
   SET CHANGE_TRACKING MANUAL;
GO

B. Starten einer vollständigen Auffüllung

Im folgenden Beispiel wird die vollständige Ausfüllung für den Volltextindex für die JobCandidate-Tabelle der AdventureWorks2008R2-Beispieldatenbank gestartet.

USE AdventureWorks2008R2;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate 
   START FULL POPULATION;
GO