Freigeben über


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 ]
     [ STATISTICAL_SEMANTICS ]
 [,...n] )
     [ WITH NO POPULATION ]
   | ALTER COLUMN column_name
     { ADD | DROP } STATISTICAL_SEMANTICS
     [ 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 ] 
   | SET SEARCH PROPERTY LIST [ = ] { OFF | property_list_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 (automatisches oder manuelles Update) 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 (Updates, 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 Konfigurieren und Verwalten von Filtern für die Suche.

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

    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.

  • STATISTICAL_SEMANTICS
    Erstellt den zusätzlichen Schlüsselausdruck und die Dokumentähnlichkeitsindizes, die Teil der statistischen semantischen Indizierung sind. Weitere Informationen finden Sie unter Semantische Suche (SQL Server).

  • [ ,...n]
    Gibt an, dass mehrere Spalten für die ADD-, ALTER- 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.

  • {ADD | DROP } STATISTICAL_SEMANTICS
    Aktiviert oder deaktiviert die statistische semantische Indizierung für die angegebenen Spalten. Weitere Informationen finden Sie unter Semantische Suche (SQL Server).

  • 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, Updates oder Löschungen seit dem letzten Update 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 das Update 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 Konfigurieren und Verwalten von Stoppwörtern und Stopplisten für Volltextsuche.

  • SET SEARCH PROPERTY LIST { OFF | property_list_name } [ WITH NO POPULATION ]
    Ändert die ggf. Sucheigenschaftenliste, die dem Index zugeordnet ist.

    • OFF
      Gibt an, dass dem Volltextindex keine Eigenschaftenliste zugeordnet werden soll. Wenn Sie die Sucheigenschaftenliste eines Volltextindexes (ALTER FULLTEXT INDEX … SET SEARCH PROPERTY LIST OFF) deaktivieren, ist keine Suche nach Eigenschaften in der Basistabelle mehr möglich.

      Wenn Sie eine vorhandene Sucheigenschaftenliste deaktivieren, wird der Volltextindex standardmäßig automatisch wieder aufgefüllt. Wenn Sie beim Deaktivieren einer Sucheigenschaftenliste WITH NO POPULATION angeben, erfolgt keine automatische Wiederauffüllung. Es empfiehlt sich jedoch, zu einem späteren Zeitpunkt, eine vollständige Auffüllung für diesen Volltextindex durchzuführen. Wenn der Volltextindex wieder aufgefüllt wird, werden die eigenschaftenspezifischen Metadaten der gelöschten Sucheigenschaften entfernt, und der Volltextindex wird kleiner und leistungsfähiger.

    • property_list_name
      Gibt den Namen der Sucheigenschaftenliste an, die dem Volltextindex zugeordnet werden soll.

      Wenn Sie einem Volltextindex eine Sucheigenschaftenliste hinzufügen, muss der Index erneut aufgefüllt werden, damit die Sucheigenschaften indiziert werden können, die für die entsprechende Sucheigenschaftenliste registriert sind. Wenn Sie beim Hinzufügen der Sucheigenschaftenliste WITH NO POPULATION angeben, müssen Sie zu einem späteren Zeitpunkt eine Auffüllung des Index ausführen.

      Wichtiger HinweisWichtig

      Wenn der Volltextindex zuvor einer anderen Sucheigenschaftenliste zugeordnet war, muss er neu erstellt werden, damit er wieder in einem konsistenten Zustand vorliegt. Bis eine vollständige Auffüllung ausgeführt wird, wird der Index sofort abgeschnitten, und er ist leer. Weitere Informationen zu den Fällen, in denen Änderungen der Sucheigenschaftenliste eine Neuerstellung bewirken, finden Sie unter "Hinweise" in diesem Thema.

      HinweisHinweis

      Sie können Sucheigenschaftenliste mehr als einem Volltextindex in der gleichen Datenbank zuordnen.

      So suchen Sie die Sucheigenschaftenlisten in der aktuellen Datenbank

      Weitere Informationen zu Sucheigenschaftenlisten finden Sie unter Suchen von Dokumenteigenschaften mithilfe von Sucheigenschaftenlisten.

Hinweise

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 von Volltextindizes.

Neuerstellung des Index durch Änderungen an der Sucheigenschaftenliste

Nachdem ein Volltextindex einer Sucheigenschaftenliste zum ersten Mal zugeordnet wurde, muss der Index neu aufgefüllt werden, damit eigenschaftenspezifische Suchbegriffe indiziert werden können. Die vorhandenen Indexdaten werden nicht abgeschnitten.

Wenn Sie den Volltextindex jedoch einer anderen Eigenschaftenliste zuordnen, wird der Index neu erstellt. Bei der Neuerstellung wird der Volltextindex unmittelbar abgeschnitten, alle vorhandenen Daten werden entfernt, und der Index muss erneut aufgefüllt werden. Während der erneuten Auffüllung werden von Volltextabfragen in der zugrunde liegenden Tabelle nur die Zeilen abgefragt, die bereits von der Auffüllung indiziert wurden. Die wieder aufgefüllten Indexdaten enthalten Metadaten aus den registrierten Eigenschaften der neu hinzugefügten Sucheigenschaftenliste.

Eine erneute Erstellung wird u. a. durch folgende Szenarien verursacht:

  • Direkter Wechsel zu einer anderen Sucheigenschaftenliste (siehe "Szenario A" weiter unten in diesem Abschnitt).

  • Deaktivieren der Sucheigenschaftenliste und späteres Zuordnen des Indexes zu einer beliebigen Sucheigenschaftenliste (siehe "Szenario B" weiter unten in diesem Abschnitt)

HinweisHinweis

Weitere Informationen zur Funktionsweise der Volltextsuche mit Sucheigenschaftenlisten finden Sie unter Suchen von Dokumenteigenschaften mithilfe von Sucheigenschaftenlisten. Informationen zu vollständigen Auffüllungen finden Sie unter Auffüllen von Volltextindizes.

Szenario A: Direkter Wechsel zu einer anderen Sucheigenschaftenliste

  1. Es wird ein Volltextindex für table_1 mit der Sucheigenschaftenliste spl_1 erstellt:

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index 
       WITH SEARCH PROPERTY LIST=spl_1, 
       CHANGE_TRACKING OFF, NO POPULATION; 
    
  2. Eine vollständige Auffüllung des Volltextindex wird ausgeführt:

    ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;
    
  3. Der Volltextindex wird später mit der folgenden Anweisung einer anderen Sucheigenschaftenliste (spl_2) zugeordnet:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_2;
    

    Diese Anweisung verursacht standardmäßig eine vollständige Auffüllung. Vor Beginn der Auffüllung wird der Index jedoch automatisch vom Volltextmodul abgeschnitten.

Szenario B: Deaktivieren der Sucheigenschaftenliste und späteres Zuordnen des Indexes zu einer Sucheigenschaftenliste

  1. In table_1 wird ein Volltextindex mit der Sucheigenschaftenliste spl_1 erstellt, und der Index wird standardmäßig automatisch aufgefüllt:

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index 
       WITH SEARCH PROPERTY LIST=spl_1; 
    
  2. Die Sucheigenschaftenliste wird wie folgt deaktiviert:

    ALTER FULLTEXT INDEX ON table_1 
       SET SEARCH PROPERTY LIST OFF WITH NO POPULATION; 
    
  3. Der Volltextindex wird erneut der gleichen oder einer anderen Sucheigenschaftenliste zugeordnet.

    Mit der folgenden Anweisung wird der Volltextindex beispielsweise wieder ursprünglichen Sucheigenschaftenliste spl_1 zugeordnet:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_1;
    

    Diese Anweisung verursacht standardmäßig eine vollständige Auffüllung.

    HinweisHinweis

    Die Neuerstellung ist auch bei einer anderen Sucheigenschaftenliste wie spl_2 erforderlich.

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. Wenn SET SEARCH PROPERTY LIST angegeben wird, muss der Benutzer über die REFERENCES-Berechtigung für die Sucheigenschaftenliste verfügen. Der Besitzer der angegebenen Stoppliste oder der angegebenen Sucheigenschaftenliste kann die REFERENCES-Berechtigung erteilen, wenn der Besitzer über ALTER FULLTEXT CATALOG-Berechtigungen verfügt.

HinweisHinweis

Der Datenbankrolle public wird für die Standardstoppliste, die mit SQL Server ausgeliefert wird, die REFERENCES-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 AdventureWorks-Beispieldatenbank festgelegt.

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

B.Zuordnen einer Eigenschaftenliste zu einem Volltextindex

Im folgenden Beispiel wird die Eigenschaftenliste DocumentPropertyList dem Volltextindex in der Tabelle Production.Document der Datenbank AdventureWorks zugeordnet. Mit dieser ALTER FULLTEXT INDEX-Anweisung wird eine vollständige Auffüllung gestartet, die das Standardverhalten der SET SEARCH PROPERTY LIST-Klausel darstellt.

HinweisHinweis

Ein Beispiel, in dem die DocumentPropertyList-Eigenschaftenliste erstellt wird, finden Sie unter CREATE SEARCH PROPERTY LIST (Transact-SQL).

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON Production.Document 
   SET SEARCH PROPERTY LIST DocumentPropertyList; 
GO

C.Entfernen einer Sucheigenschaftenliste

Im folgenden Beispiel wird die Eigenschaftenliste DocumentPropertyList aus dem Volltextindex in der Tabelle Production.Document der Datenbank AdventureWorks entfernt. In diesem Beispiel besteht keine dringende Notwendigkeit, die Eigenschaften aus dem Index zu entfernen; daher wird die WITH NO POPULATION-Option angegeben. Suchen auf Eigenschaftenebene in diesem Volltextindex sind jedoch nicht mehr zulässig.

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON Production.Document 
   SET SEARCH PROPERTY LIST OFF WITH NO POPULATION; 
GO

D.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 AdventureWorks-Beispieldatenbank gestartet.

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

Siehe auch

Verweis

sys.fulltext_indexes (Transact-SQL)

CREATE FULLTEXT INDEX (Transact-SQL)

DROP FULLTEXT INDEX (Transact-SQL)

Konzepte

Volltextsuche (SQL Server)

Auffüllen von Volltextindizes