Aktualisieren der Volltextsuche

Das Aktualisieren der Volltextsuche auf SQL Server 2008 erfolgt während des Setups und beim Anfügen, Wiederherstellen oder Kopieren von Datenbankdateien und Volltextkatalogen aus einer älteren Version von SQL Server mithilfe des Assistenten zum Kopieren von Datenbanken.

In diesem Thema werden die folgenden Aspekte der Volltextaktualisierung erläutert:

  • Aktualisieren einer Serverinstanz

  • Volltext-Aktualisierungsoptionen

  • Überlegungen beim Auswählen einer Volltext-Aktualisierungsoption

  • Migrieren von Volltextindizes beim Aktualisieren einer Datenbank auf SQL Server 2008

  • Überlegungen zum Wiederherstellen eines SQL Server 2005-Volltextkatalogs auf SQL Server 2008

  • Anfügen einer SQL Server 2005-Datenbank an SQL Server 2008

Aktualisieren einer Serverinstanz

Bei einer direkten Aktualisierung wird eine Instanz von SQL Server 2008 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.

Komponente

Beschreibung

Wörtertrennung, Wortstammerkennung und Filter

Jede Instanz verwendet ihren eigenen Satz von Wörtertrennung, Wortstammerkennung und Filtern, anstatt auf die Betriebssystemversion dieser Komponenten zurückzugreifen. Diese Komponenten sind auf Instanzebene einfacher zu registrieren und zu konfigurieren. Weitere Informationen finden Sie unter Wörtertrennung und Wortstammerkennung und Filter für die Volltextsuche.

Filterdaemonhost

Bei Volltext-Filterdaemonhosts handelt es sich um Prozesse, die erweiterbare Komponenten von Drittanbietern für Indizierung und Abfragen, wie zum Beispiel Wörtertrennung, Wortstammerkennung und Filter, auf sichere Weise laden und diese ausführen, ohne die Integrität des Volltextmoduldiensts zu beschädigen. Eine Serverinstanz verwendet einen Multithreadprozess für alle Multithreadfilter und einen Singlethreadprozess für alle Singlethreadfilter.

HinweisHinweis
Mit SQL Server 2008 wird ein Dienstkonto für den FDHOST-Startdienst (MSSQLFDLauncher) eingeführt. Dieser Dienst gibt die Dienstkontoinformationen an die Filterdaemonhost-Prozesse einer bestimmten Instanz von SQL Server weiter. Informationen zum Festlegen des Dienstkontos finden Sie unter Vorgehensweise: Festlegen des Dienstkontos für das FDHOST-Startprogramm (MSSQLFDLauncher) für die Volltextsuche (SQL Server-Konfigurations-Manager).

In SQL Server 2005 und älteren Versionen befindet sich jeder Volltextindex in einem Volltextkatalog, der einer Dateigruppe angehört, über einen physischen Pfad verfügt und als Datenbankdatei behandelt wird. In SQL Server 2008 ist ein Volltextkatalog ein logisches Konzept - ein virtuelles Objekt -, bei dem eine Gruppe von Volltextindizes verwendet wird. Deshalb wird ein neuer Volltextkatalog nicht als Datenbankdatei mit einem physischen Pfad behandelt. Wenn jedoch ein Volltextkatalog aktualisiert wird, der Datendateien enthält, wird auf demselben Datenträger jeweils eine neue Dateigruppe erstellt. Auf diese Weise wird nach der Aktualisierung das alte Datenträger-E/A-Verhalten beibehalten. 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 bei der Aktualisierung der Volltextindex in derselben Dateigruppe als Basistabelle - bzw. bei einer partitionierten Tabelle in der primären Dateigruppe - beibehalten.

Weitere Informationen zur Architektur der Volltextsuche in SQL Server 2008 finden Sie unter Architektur der Volltextsuche.

HinweisHinweis

DDL-Anweisungen für SQL Server 2005Transact-SQL, die angeben, dass die Volltextkataloge ordnungsgemäß funktionieren.

Volltext-Aktualisierungsoptionen

Beim Aktualisieren einer Serverinstanz auf SQL Server 2008 können Sie auf der Benutzeroberfläche eine der folgenden Volltext-Aktualisierungsoptionen wählen.

  • 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 mit SQL Server 2008 eingeführten Wörtertrennungen. Aus diesem Grund sollten Sie zu einem späteren Zeitpunkt eine Neuerstellung der Volltextkataloge durchführen.

    HinweisHinweis

    Sie können die Neuerstellung im Multithreadmodus ausführen. Wenn mehr als 10 CPUs verfügbar sind, ist die Neuerstellung ggf. schneller als der Import, falls dabei alle CPUs genutzt werden können.

    Wenn ein Volltextkatalog nicht verfügbar ist, werden die zugehörigen Volltextindizes neu erstellt. Diese Option ist nur für SQL Server 2005-Datenbanken verfügbar.

    Informationen zu den Auswirkungen eines Imports von Volltextindizes finden Sie unter "Überlegungen beim Auswählen einer Volltext-Aktualisierungsoption" weiter unten in diesem Thema.

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

  • Zurücksetzen
    Volltextkataloge werden zurückgesetzt. Volltextkatalogdateien der Version SQL Server 2005 werden entfernt. Die Metadaten für die Volltextkataloge und die Volltextindizes bleiben jedoch erhalten. Nach der Aktualisierung wird die Änderungsnachverfolgung für alle Volltextindizes deaktiviert, und Crawls werden nicht automatisch gestartet. Der Katalog bleibt leer, bis Sie ihn nach Beendigung der Aktualisierung manuell vollständig auffüllen.

Überlegungen beim Auswählen einer Volltext-Aktualisierungsoption

Beachten Sie beim Auswählen der Aktualisierungsoption Folgendes:

  • Wie werden Wörtertrennungen verwendet?

    Der Volltextsuchdienst von SQL Server 2008 enthält neue Wörtertrennungen und Wortstammerkennungen. Aus diesem Grund können sich die Ergebnisse von Volltextabfragen für ein bestimmtes Textmuster oder Szenario im Vergleich zu älteren Versionen unterscheiden. Es ist also wichtig, beim Auswählen einer geeigneten Aktualisierungsoption auf die verwendete Wörtertrennung zu achten:

    • Wenn die Wörtertrennung der verwendeten Volltextsprache sich in SQL Server 2008 nicht geändert hat oder wenn die Rückrufgenauigkeit nicht entscheidend ist, ist das Importieren eine geeignete Maßnahme. Falls später Rückrufprobleme auftreten, können Sie eine Aktualisierung auf die neuen Wörtertrennungen durchführen, indem Sie die Volltextkataloge einfach neu erstellen. Weitere Informationen finden Sie unter "Wörtertrennungen und importierte Volltextindizes" weiter unten in diesem Abschnitt.

    • Wenn die Rückrufgenauigkeit wichtig ist und Sie eines der Worttrennmodule verwenden, die in SQL Server 2008 optimiert wurden, sollten Sie eine Neuerstellung durchführen.

  • 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. Mit der Neuerstellung erzielen Sie besonders dann eine optimale Leistung der Volltextabfragen, wenn Sie Volltextkataloge mit Volltextindizes verwenden, bei denen die Volltextschlüsselspalte der Basistabelle ein ganzzahliger Datentyp ist. In diesem Fall ist es sehr zu empfehlen, die Option Neu erstellen zu verwenden.

    HinweisHinweis

    Für die Volltextindizes in SQL Server 2008 ist es ratsam, dass es sich bei der Spalte, die als Volltextschlüssel dient, um einen ganzzahligen Datentyp handelt. Weitere Informationen finden Sie unter Leistungssteigerung und Optimierung von Volltextindizes.

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

    Das Importieren bzw. das Neuerstellen während einer Aktualisierung belegt viele CPU-Ressourcen. Dies führt zu Verzögerungen beim Aktualisieren und Herstellen der Onlineverfügbarkeit des Rests der Serverinstanz. Wenn die schnellstmögliche Onlineverfügbarkeit der Serverinstanz wichtig und das manuelle Auffüllen nach der Aktualisierung akzeptabel ist, eignet sich die Option Zurücksetzen.

Verwenden von neuen Wörtertrennungen nach dem Importieren eines SQL Server 2005-Volltextindex

Beim Importieren eines SQL Server 2005-Volltextindex ist es wichtig, sich bewusst zu machen, dass SQL Server 2008 für viele der in SQL Server 2005 enthaltenen Sprachen neue Wörtertrennungen verwendet. Nur die Wörtertrennungen für Englisch, Koreanisch, Thai und Chinesisch (alle Formen) bleiben gleich. Für die anderen Sprachen führt SQL Server 2008 eine neue Generation von Wörtertrennungen ein, die sich ggf. etwas anders als SQL Server 2005-Wörtertrennungen in importierten SQL Server 2005-Volltextindizes verhalten.

Wenn bei der Aktualisierung einer SQL Server 2005-Datenbank auf SQL Server 2008 ein Volltextkatalog importiert wurde, sind eine oder mehrere Sprachen, die von den Volltextindizes im Volltextkatalog verwendet werden, jetzt ggf. neuen Wörtertrennungen zugeordnet. Wenn eine Abfrage in diesen Sprachen die neuen Wörtertrennungen verwendet, kann es in einigen Fällen zu Konflikten zwischen der Abfrage und dem Inhalt des Volltextindex kommen, weil zwischen den alten und neuen Wörtertrennungen leichte Unterschiede bestehen können. Führen Sie in diesem Fall Folgendes durch, um eine vollständige Übereinstimmung zwischen Abfragen und dem Inhalt des Volltextindex sicherzustellen:

  • Erstellen Sie den Volltextkatalog neu, der den Volltextindex enthält (ALTER FULLTEXT CATALOGcatalog_name REBUILD)

  • Geben Sie eine FULL POPULATION für den Volltextindex aus (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION).

Wichtiger HinweisWichtig

Wenn Ihre Volltextkataloge und -indizes unveränderte Wörtertrennungen verwenden (zum Beispiel nur die englischen Wörtertrennungen), können keine Konflikte auftreten. Die Wörtertrennungen für Abfragen sind diejenigen, die bei der Indexerstellung und bei zukünftigen Abfragen verwendet werden.

Informationen zu Wörtertrennungen finden Sie unter Wörtertrennung und Wortstammerkennung.

Aktualisieren von Füllwortdateien auf Stopplisten

SQL Server 2005-Füllwörter wurden durch SQL Server 2008-Stoppwörter ersetzt. Wenn eine Datenbank von einer vorherigen Version auf SQL Server 2008 aktualisiert wird, werden die Füllwortdateien in SQL Server 2008 nicht mehr verwendet. Die alten Füllwortdateien werden jedoch im Ordner FTDATA\FTNoiseThesaurusBak gespeichert, und Sie können sie später beim Aktualisieren oder Erstellen der entsprechenden SQL Server 2008-Stopplisten verwenden.

Nach der Aktualisierung:

  • Wenn Sie in Ihrer Installation von SQL Server 2005 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 geändert wurden, gehen diese Änderungen während der Aktualisierung verloren. Wenn Sie die Aktualisierungen erneut erstellen möchten, müssen Sie diese Änderungen in der entsprechenden SQL Server 2008-Stoppliste manuell neu erstellen. Weitere Informationen finden Sie unter ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Wenn Sie auf die Volltextindizes keine Stoppwörter anwenden möchten (wenn Sie z. B. die Füllwortdateien in der SQL Server 2005-Installation 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 Stoppwortfilterung und löst eine Auffüllung der Tabelle aus, ohne Wörter zu filtern, die als Füllwörter betrachtet werden.

Sichern und Importieren von Volltextkatalogen

Für Volltextkataloge, die während der Aktualisierung neu erstellt oder zurückgesetzt werden, (oder für neue Volltextkataloge) ist der Volltextkatalog ein logisches Konzept, und der Katalog befindet sich nicht in einer Dateigruppe. Um in SQL Server 2008 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 eines SQL Server 2008-Volltextkatalogs.

Bei Volltextkatalogen, die aus SQL Server 2005 importiert werden, ist der Volltextkatalog immer noch eine Datenbankdatei in einer eigenen Dateigruppe. Der Sicherungsprozess von SQL Server 2005 für Volltextkataloge gilt weiterhin, jedoch mit der Ausnahme, dass der MSFTESQL-Dienst in SQL Server 2008 nicht vorhanden ist. Weitere Informationen zum SQL Server 2005-Prozess finden Sie unter Sichern und Wiederherstellen von Volltextkatalogen in der SQL Server 2005-Onlinedokumentation (möglicherweise in englischer Sprache).

HinweisHinweis

Informationen zur Sicherung und Wiederherstellung einer SQL Server 2008-Datenbank finden Sie unter Sichern und Wiederherstellen eines SQL Server 2008-Volltextkatalogs.

Migrieren von Volltextindizes beim Aktualisieren einer Datenbank auf SQL Server 2008

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 SQL Server 2008-Serverinstanz aktualisiert werden. SQL Server 2005-Volltextindizes werden, falls vorhanden, importiert, zurückgesetzt oder neu erstellt. SQL Server 2000-Volltextindizes werden, falls vorhanden, neu erstellt oder zurückgesetzt. Die Servereigenschaft upgrade_option steuert, welche Volltext-Aktualisierungsoption die Serverinstanz während dieser Datenbankaktualisierungen verwendet.

Nachdem Sie eine SQL Server 2005- oder SQL Server 2000-Datenbank in SQL Server 2008 angehängt, wiederhergestellt oder kopiert haben, ist die Datenbank sofort verfügbar und wird automatisch aktualisiert. Je nach Menge der indizierten Daten kann der Importvorgang mehrere Stunden dauern, die Neuerstellung sogar bis zu zehnmal länger. Wenn die Aktualisierungsoption auf Importieren festgelegt und kein Volltextkatalog verfügbar ist, werden die zugehörigen Volltextindizes neu erstellt.

So ändern Sie das Verhalten der Volltextaktualisierung für eine Serverinstanz

Überlegungen zum Wiederherstellen eines SQL Server 2005-Volltextkatalogs auf SQL Server 2008

Eine Möglichkeit zum Aktualisieren der Volltextdaten einer SQL Server 2005-Datenbank auf SQL Server 2008 besteht darin, eine vollständige Datenbanksicherung für SQL Server 2008 wiederherzustellen.

Beim Importieren eines Katalogs können Sie die Datenbank und die Katalogdatei sichern und wiederherstellen. Das Verhalten entspricht dem Verhalten in SQL Server 2005:

  • Die vollständige Datenbanksicherung enthält den Volltextkatalog. Verwenden Sie zum Verweisen auf den Volltextkatalog seinen SQL Server 2005-Dateinamen: sysft_+catalog-name.

  • Wenn der Volltextkatalog offline ist, kann die Sicherung nicht ausgeführt werden.

Weitere Informationen zur Sicherung und Wiederherstellung von SQL Server 2005-Volltextkatalogen finden Sie unter Sichern und Wiederherstellen von Volltextkatalogen und Dateisicherung und -wiederherstellung und Volltextkataloge in der SQL Server 2005-Onlinedokumentation.

Wenn die Datenbank für SQL Server 2008 wiederhergestellt wird, wird für den Volltextkatalog eine neue Datenbankdatei erstellt. Der Standardname dieser Datei lautet ftrow_catalog-name.ndf. Wenn Sie für catalog-name (Katalogname) zum Beispiel cat1 verwenden, lautet der Standardname der SQL Server 2008-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.

Nach dem Importieren der Kataloge werden die sys.database_files und sys.master_files aktualisiert, um die Katalogeinträge zu entfernen, und die Spalte path in sys.fulltext_catalogs wird auf NULL festgelegt.

So sichern Sie eine Datenbank

So stellen Sie eine Datenbanksicherung wieder her

HinweisHinweis

Weitere Informationen zur Wiederherstellung von SQL Server 2008-Volltextindizes finden Sie unter Schrittweise Wiederherstellung und Volltextindizes.

Beispiel

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

  • Die Datenbankdatei ftdb1.mdf wird an den Speicherort C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL10.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf verschoben.

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

  • Die Katalogdateien, die dem Katalog sysft_cat90 entsprechen, werden in C:\temp verschoben. Nachdem die Volltextindizes importiert wurden, werden diese automatisch in eine Datenbankdatei mit dem Namen C:\ftrow_sysft_cat90.ndf eingefügt, 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\MSSQL10.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 an SQL Server 2008

In SQL Server 2008 ist ein Volltextkatalog ein logisches Konzept, bei dem eine Gruppe von Volltextindizes verwendet wird. Ein Volltextkatalog ist ein virtuelles Objekt und gehört keiner Dateigruppe an. Wenn Sie jedoch eine SQL Server 2005-Datenbank mit Volltextkatalogdateien an eine SQL Server 2008-Serverinstanz anfügen, werden die Katalogdateien von ihrem vorherigen Speicherort aus zusammen mit den anderen Datenbankdateien angefügt. Dies entspricht der Vorgehensweise für SQL Server 2005.

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

Wenn SQL Server 2008 keine Volltextkatalogdatei finden kann oder wenn die Volltextdatei während des Anfügens verschoben und ein neuer Speicherort angegeben wurde, ist das Verhalten von der gewählten Volltext-Aktualisierungsoption abhängig. Wenn die Volltext-Aktualisierungsoption Importieren oder Neu erstellen lautet, wird der angefügte Volltextkatalog neu erstellt. Wenn die Volltext-Aktualisierungsoption Zurücksetzen lautet, wird der angefügte Volltextkatalog zurückgesetzt.

Weitere Informationen zum Trennen und Anfügen einer Datenbank finden Sie unter Trennen und Anfügen von Datenbanken, CREATE DATABASE (Transact-SQL), sp_attach_db und sp_detach_db (Transact-SQL).