Upgrade Volltextsuche (SQL Server Suche)

Gilt für:SQL ServerAzure SQL-Datenbank

SQL Server aktualisiert die Volltextsuche während des Setups oder beim Anfügen, Wiederherstellen oder Kopieren von Datenbankdateien und Volltextkatalogen aus SQL Server 2005 (9.x) und früheren Versionen.

Upgrade einer Serverinstanz

Bei einem direkten Upgrade wird eine Instanz von SQL Server parallel zur alten Version von SQL Server installiert, und die Daten werden migriert. Wenn die Volltextsuche in der alten Version von SQL Server installiert war, wird automatisch eine neue Version der Volltextsuche installiert. Eine parallele Installation bedeutet, dass jede der folgenden Komponenten auf der Instanzebene von SQL Server vorhanden ist.

Worttrennung, Stemming und Filter

Jede Instanz verwendet nun ihre eigenen Worttrennkomponenten, Stemmer und Filter, statt auf die vom Betriebssystem bereitgestellten Versionen dieser Komponenten zurückzugreifen. Diese Komponenten sind auf Instanzebene einfacher zu registrieren und zu konfigurieren. Weitere Informationen finden Sie unter Konfigurieren und Verwalten von Wörtertrennungen und Stemmeren für die Suche (SQL Server) und Konfigurieren und Verwalten von Filtern für die Suche.

Filterdaemonhost

Hostprozesse für den Volltextfilter-Daemon sind Prozesse, die erweiterbare externe Komponenten, die für die Indizierung und Abfrage verwendet werden, wie Worttrennmodule, Stemmingmodule und Filter, sicher laden und steuern, ohne die Integrität der Volltext-Engine zu gefährden. Eine Serverinstanz verwendet für alle mehrthreadigen Filter einen mehrthreadigen Prozess und für alle einzelthreadigen Filter einen einzelthreadigen Prozess.

Der FDHOST-Startprogrammdienst (MSSQLFDLauncher) verteilt die Dienstkontoinformationen an die Filterdaemonhostprozesse einer bestimmten Instanz von SQL Server. Informationen zum Festlegen des Dienstkontos finden Sie unter Festlegen des Dienstkontos für das Startprogramm des Volltextfilterdaemons.

Kompatibilität des SQL Server 2005-Upgrades

Ein Volltextkatalog ist ein logisches oder virtuelles Objekt, das eine Gruppe von Volltextindizes enthält. Daher wird ein neuer Volltextkatalog nicht als Datenbankdatei mit einem physischen Pfad behandelt. Wenn Sie jedoch ein Upgrade von SQL Server 2005 (9.x) durchführen, wird für jeden Volltextkatalog, der Datendateien enthält, eine neue Dateigruppe auf demselben Datenträger erstellt.

Dieses Verfahren behält das alte E/A-Verhalten des Datenträgers nach dem Upgrade bei. Jeder Volltextindex aus diesem Katalog wird in die neue Dateigruppe eingefügt, wenn der Stammpfad vorhanden ist. Falls der alte Volltextkatalogpfad ungültig ist, wird beim Upgrade der Volltextindex in derselben Dateigruppe wie die Basistabelle bzw. bei einer partitionierten Tabelle in der primären Dateigruppe beibehalten.

Volltextupgrade-Optionen

Beim Aktualisieren einer SQL Serverinstanz auf können Sie auf der Benutzeroberfläche eine der folgenden Volltextupgrade-Optionen wählen. Diese Optionen sind nur für SQL Server 2005(9.x)-Datenbanken verfügbar.

Importieren

Volltextkataloge werden importiert. Normalerweise ist der Import bedeutend schneller als eine Neuerstellung. Wenn Sie zum Beispiel nur eine CPU verwenden, läuft ein Import etwa zehnmal schneller ab als eine Neuerstellung. Ein importierter Volltextkatalog verwendet jedoch nicht die neuen Wörtertrennungen, die mit der neuesten Version von SQL Server installiert sind. Volltextkataloge müssen neu erstellt werden, um die Konsistenz in Abfrageergebnissen sicherzustellen.

Hinweis

Die Neuerstellung kann im Multithreading-Modus ausgeführt werden, und wenn mehr als 10 CPUs verfügbar sind, ist sie möglicherweise schneller als ein Import, wenn Sie der Neuerstellung erlauben, alle CPUs zu verwenden.

Wenn kein Volltextkatalog verfügbar ist, werden die zugehörigen Volltextindizes neu erstellt.

Informationen zum Import von Volltextindex finden Sie unter Überlegungen zum Auswählen einer Volltextupgradeoption weiter unten in diesem Artikel.

Rebuild

Volltextkataloge werden mithilfe der neuen und verbesserten Worttrennmodule neu erstellt. Das Neuerstellen von Indizes kann einige Zeit dauern, und nach dem Upgrade ist ggf. eine beträchtliche Menge an CPU-Leistung und Arbeitsspeicherkapazität erforderlich.

Zurücksetzen

Volltextkataloge werden zurückgesetzt. Beim Upgrade von SQL Server 2005 (9.x) werden die Volltextkatalogdateien entfernt, aber die Metadaten für Volltextkataloge und Volltextindizes bleiben erhalten. Nach dem Upgrade werden alle Volltextindizes für die Änderungsnachverfolgung deaktiviert und Durchforstungen werden nicht automatisch gestartet. Der Katalog wird leer bleiben, bis Sie nach Abschluss des Upgrades manuell eine vollständige Befüllung durchführen.

Überlegungen beim Auswählen einer Volltextupgrade-Option

Beachten Sie beim Auswählen der Upgradeoption für Ihr Upgrade Folgendes:

  • Ist die Konsistenz in Abfrageergebnissen erforderlich?

    SQL Server installiert neue Wörtertrennungen, die von der Volltextsuche und semantischen Suche verwendet werden. Die Wörtertrennungen werden sowohl bei der Indizierung als auch bei Abfragen verwendet. Wenn Sie die Volltextkataloge nicht neu erstellen, sind Ihre Suchergebnisse möglicherweise inkonsistent. Wenn Sie eine Volltextabfrage senden, die nach einem Ausdruck sucht, der von der Wörtertrennung in einer früheren SQL Server-Version und der aktuellen Wörtertrennung unterschiedlich getrennt wird, können Dokumente oder Zeilen, in denen der Ausdruck enthalten ist, möglicherweise nicht abgerufen werden. Das liegt daran, dass die indizierten Ausdrücke anhand einer anderen Logik getrennt wurden als der von der Abfrage verwendeten Logik. Die Lösung besteht darin, die Volltextkataloge mit den neuen Wörtertrennungen aufzufüllen (neu zu erstellen), damit das Verhalten bei der Indizierung und bei Abfragen gleich ist. Sie können dafür die Option „Neu erstellen“ auswählen oder nach Auswahl der Option „Importieren“ manuell neu erstellen.

  • Wurden Volltextindizes basierend auf ganzzahligen Volltextschlüsselspalten erstellt?

    Bei der Neuerstellung werden interne Optimierungen durchgeführt, die die Abfrageleistung des aktualisierten Volltextindex in einigen Fällen verbessern. Insbesondere wenn Sie über Volltextkataloge verfügen, die Volltextindizes enthalten, bei denen die Volltextschlüsselspalte der Basistabelle ein Ganzzahl-Datentyp ist, erzielt eine Neuerstellung nach dem Upgrade eine optimale Leistung der Volltextabfragen. In diesem Fall ist es sehr zu empfehlen, die Option Neu erstellen zu verwenden.

    Hinweis

    Für Volltextindizes sollte es sich bei der Spalte, die als Volltextschlüssel dient, um einen ganzzahligen Datentyp handeln. Weitere Informationen finden Sie unter Verbessern der Leistung von Volltextindizes.

  • Worauf liegt beim Herstellen der Onlineverfügbarkeit der Serverinstanz die Priorität?

    Das Importieren bzw. das Neuerstellen während eines Upgrades belegt viele CPU-Ressourcen. Dies führt zu Verzögerungen beim Aktualisieren und Herstellen der Onlineverfügbarkeit des Rests der Serverinstanz. Wenn die Serverinstanz so schnell wie möglich online geschaltet werden soll und Sie bereit sind, nach dem Upgrade eine manuelle Datenpopulation auszuführen, ist Zurücksetzen geeignet.

Sicherstellen von konsistenten Abfrageergebnissen nach dem Importieren eines Volltextindexes

Wenn beim Upgrade einer SQL Server 2005 (9.x) Datenbank ein Volltextkatalog importiert wurde, kann es in einigen Fällen zu Konflikten zwischen der Abfrage und dem Inhalt des Volltextindexes kommen, weil zwischen den alten und neuen Wörtertrennungen Unterschiede bestehen können. Wählen Sie in diesem Fall eine der folgenden Optionen aus, um eine vollständige Übereinstimmung zwischen Abfragen und dem Inhalt des Volltextindexes sicherzustellen:

  • Erstellen Sie den Volltextkatalog neu, der den Volltextindex enthält, mit ALTER FULLTEXT CATALOG:

    ALTER FULLTEXT CATALOG <catalog_name> REBUILD;
    
  • Führen Sie mit ALTER FULLTEXT INDEX eine vollständige Auffüllung für den Volltextindex aus:

    ALTER FULLTEXT INDEX ON <table_name> START FULL POPULATION;
    

Weitere Informationen zu Worttrennungen finden Sie unter Konfigurieren und Verwalten von Worttrennungen und Wortstammbildnern für die Suche (SQL Server).

Rauschwortdateien in Stopplisten umwandeln

Wenn eine Datenbank von SQL Server 2005 (9.x) aktualisiert wird, werden die Stoppwortdateien nicht mehr verwendet. Die alten Füllwortdateien werden jedoch im FTDATA\FTNoiseThesaurusBak Ordner gespeichert, und Sie können sie später beim Aktualisieren oder Erstellen der entsprechenden SQL Server Stopplisten verwenden.

Nach dem Upgrade von SQL Server 2005 (9.x):

  • Wenn Sie in Ihrer Installation von SQL Server 2005 (9.x) keine Füllwortdateien hinzugefügt, geändert oder gelöscht haben, dürften die Systemstopplisten Ihren Anforderungen entsprechen.

  • Wenn die Füllwortdateien in SQL Server 2005 (9.x) geändert wurden, gehen diese Änderungen während des Upgrades verloren. Um diese Aktualisierungen erneut zu erstellen, müssen Sie diese Änderungen manuell in der entsprechenden Stoppliste nachbilden. Weitere Informationen finden Sie unter ALTER FULLTEXT STOPLIST.

  • Wenn Sie keine Stoppwörter auf Ihre Volltextindizes anwenden möchten (z. B. wenn Sie Ihre Füllwortdateien in Ihrer SQL Server 2005 (9.x)-Installation gelöscht oder gelöscht haben, müssen Sie die Stoppliste für jeden aktualisierten Volltextindex deaktivieren. Führen Sie die folgende Transact-SQL Anweisung aus ( Datenbank wird durch den Namen der aktualisierten Datenbank und Tabelle durch den Namen der Tabelle ersetzt):

    Use database;
    ALTER FULLTEXT INDEX ON table
       SET STOPLIST OFF;
    GO
    

    Die STOPLIST OFF-Klausel entfernt die Stop-Word-Filterung und löst eine Population der Tabelle aus, ohne wörter zu filtern, die als Rauschen betrachtet werden.

Sichern und Importieren von Volltextkatalogen

Bei Volltextkatalogen, die während des Upgrades neu erstellt oder zurückgesetzt werden (und für neue Volltextkataloge), ist der Volltextkatalog ein logisches Konzept und befindet sich nicht in einer Dateigruppe. Um einen Volltextkatalog zu sichern, müssen Sie daher jede Dateigruppe identifizieren, die einen Volltextindex des Katalogs enthält, und diese einzeln sichern. Weitere Informationen finden Sie unter Sichern und Wiederherstellen von Volltextkatalogen und Indizes.

Bei Volltextkatalogen, die aus SQL Server 2005 (9.x) importiert werden, ist der Volltextkatalog immer noch eine Datenbankdatei in einer eigenen Dateigruppe. Der SQL Server 2005 (9.x)-Sicherungsprozess für Volltextkataloge gilt weiterhin, außer dass der MSFTESQL-Dienst in SQL Server nicht vorhanden ist. Weitere Informationen zum SQL Server 2005 (9.x) Prozess finden Sie unter Sichern und Wiederherstellen von Volltextkatalogen in der SQL Server 2005-Onlinedokumentation.

Migrieren von Volltextindizes beim Upgrade einer Datenbank

Datenbankdateien und Volltextkataloge einer vorherigen Version von SQL Server können durch Anfügen, Wiederherstellen oder mithilfe des Assistenten zum Kopieren von Datenbanken auf eine vorhandene Instanz aktualisiert werden. SQL Server 2005 (9.x) Volltextindizes werden, falls vorhanden, importiert, zurückgesetzt oder neu erstellt. Die upgrade_option Servereigenschaft gibt an, welche Volltextupgradeoption die Serverinstanz während dieser Datenbankupgrades verwendet.

Nachdem Sie eine beliebige SQL Server 2005 (9.x) Datenbank an eine neuere Instanz angehängt, wiederhergestellt oder kopiert haben, ist die Datenbank sofort verfügbar und wird automatisch aktualisiert. Abhängig von der Menge der indizierten Daten kann der Import mehrere Stunden dauern, und die Neuerstellung kann bis zu 10-mal länger dauern. Wenn die Upgradeoption für den Import festgelegt ist, wenn kein Volltextkatalog verfügbar ist, werden die zugehörigen Volltextindizes neu erstellt.

Ändern des Volltext-Upgrade-Verhaltens bei einer Serverinstanz

Überlegungen zum Wiederherstellen eines SQL Server 2005 (9.x)-Volltextkatalogs

Eine Möglichkeit zum Aktualisieren der Volltextdaten einer SQL Server 2005 (9.x) Datenbank besteht darin, eine vollständige Datenbanksicherung in einer neueren Instanz von SQL Server wiederherzustellen.

Beim Importieren eines SQL Server 2005 (9.x) Volltextkatalogs können Sie die Datenbank und die Katalogdatei sichern und wiederherstellen. Das Verhalten ist dasselbe wie in SQL Server 2005 (9.x):

  • Die vollständige Datenbanksicherung enthält den Volltextkatalog. Verwenden Sie zum Verweisen auf den Volltextkatalog seinen SQL Server 2005 (9.x) Dateinamen: sysft_+catalog_name.

  • Wenn der Volltextkatalog offline ist, schlägt die Sicherung fehl.

Weitere Informationen zum Sichern und Wiederherstellen von SQL Server 2005 (9.x)-Volltextkatalogen finden Sie unter Sichern und Wiederherstellen von Volltextkatalogen und Indizes undDateisicherungs- und Full-Text katalogen in SQL Server 2005 (9.x)-Büchern online.

Wenn die Datenbank in einer neueren Instanz von SQL Server wiederhergestellt wird, wird eine neue Datenbankdatei für den Volltextkatalog erstellt. Der Standardname dieser Datei lautet ftrow_catalog-name.ndf. Wenn Sie für catalog-name (Katalogname) zum Beispiel cat1verwenden, lautet der Standardname der SQL Server Datenbankdatei ftrow_cat1.ndf. Wenn der Standardname im Zielverzeichnis jedoch bereits verwendet wird, erhält die neue Datenbankdatei den Namen ftrow_catalog-name{GUID}.ndf, wobei GUID für den eindeutigen Bezeichner (Globally Unique Identifier, GUID) der neuen Datei steht.

Nachdem die Kataloge importiert wurden, werden sys.database_files und sys.master_files aktualisiert, um die Katalogeinträge zu entfernen, und die path-Spalte in sys.fulltext_catalogs wird auf NULL gesetzt.

Sichern einer Datenbank

Wiederherstellen einer Datenbanksicherung

Beispiel

Im folgenden Beispiel wird die Klausel MOVE in der Anweisung RESTORE verwendet, um eine SQL Server 2005-Datenbank (9.x) mit dem Namen ftdb1 wiederherzustellen. Die SQL Server 2005 (9.x) Datenbankdateien, -Protokolldateien und -Katalogdateien werden wie folgt an neue Speicherorte auf der SQL Server-Serverinstanz verschoben:

  • Die Datenbankdatei ftdb1.mdfwird an den Speicherort C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdfverschoben.

  • Die Protokolldatei ftdb1_log.ldfwird in ein Protokollverzeichnis auf Ihrem Protokolllaufwerk verschoben: Protokolllaufwerk:\Protokollverzeichnis\ftdb1_log.ldf.

  • Die Katalogdateien, die dem Katalog sysft_cat90 entsprechen, werden in C:\tempverschoben. Nachdem die Volltextindizes importiert wurden, werden sie automatisch in die Datenbankdatei C:\ftrow_sysft_cat90.ndf verschoben, und das Verzeichnis C:\temp wird gelöscht.

RESTORE DATABASE [ftdb1] FROM DISK = N'C:\temp\ftdb1.bak'
    WITH FILE = 1,
    MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',
    MOVE N'sysft_cat90' TO N'C:\temp';

Anfügen einer SQL Server 2005-Datenbank

In SQL Server 2008 (10.0.x) und höheren Versionen ist ein Volltextkatalog ein logisches Konzept, bei dem eine Gruppe von Volltextindizes verwendet wird. Der Volltextkatalog ist ein virtuelles Objekt, das keiner Dateigruppe angehört. Wenn Sie jedoch eine SQL Server 2005 (9.x)-Datenbank mit Volltextkatalogdateien an eine neuere SQL Server-Serverinstanz anfügen, werden die Katalogdateien von ihrem vorherigen Speicherort aus zusammen mit den anderen Datenbankdateien angefügt. Dies entspricht der Vorgehensweise in SQL Server 2005 (9.x).

Der Status der einzelnen angefügten Volltextkataloge von SQL Server entspricht dem Status beim Trennen der Datenbank von SQL Server 2005 (9.x). Wenn beim Trennvorgang eine Auffüllung des Volltextindex unterbrochen wurde, wird die Auffüllung in SQL Server wieder aufgenommen, und der Volltextindex ist für die Volltextsuche verfügbar.

Wenn SQL Server keine Volltextkatalogdatei finden kann oder die Volltextdatei während des Anfügungsvorgangs verschoben wurde, ohne einen neuen Speicherort anzugeben, hängt das Verhalten von der ausgewählten Volltextupgradeoption ab. Wenn die Volltextupgrade-Option Importieren oder Neu erstellenlautet, wird der angefügte Volltextkatalog neu erstellt. Wenn die Volltextupgrade-Option Zurücksetzen lautet, wird der angefügte Volltextkatalog zurückgesetzt.

Weitere Informationen zum Trennen und Anfügen einer Datenbank finden Sie unter "Datenbank trennen und anfügen (SQL Server)", CREATE DATABASE"sp_attach_db" und "sp_detach_db".