Wie kann ich die Volltextsuche des MS SQL Servers ohne ‚Management Studio‘ aktivieren? Ist auch die Express-Edition 2012 dafür geeignet?
Hinweise
Dieser Beitrag richtet sich an System-Administratoren und Entwickler, die einen Volltextindex mit Skripten anlegen möchten.
Wenn Sie die kostenlose Express-Edition 2012 verwenden, dann ist „Express with Advanced Services“ erforderlich. Bei unserem Test konnten wir mit dem Management Studio keinen Index erstellen, das System meldete „Volltext wird von dieser Edition von SQL Server nicht unterstützt (Microsoft.SqlServer.Smo)“. Falls Sie wegen diesem Problem hierher gefunden haben, dann können Sie den Katalog mit Skript 2 anlegen und diesen anschließend im Management Studio weiter konfigurieren.
Anwender einer Office Manager-Version ab 12.0.3.468 wählen bitte im Menü Volltextindex und klicken auf den Schalter SQL Server-Index aktivieren.
die SeiteBeispiel-Datenbank
Die folgende Beschreibung verwendet eine Office Manager-Archivdatenbank als Beispiel, sie ist aber allgemeingültig.
Datenbankname: „dmsdb“
Tabellen: Die Volltextsuche wird für „document“ und „docarch“ aktiviert.
Primärschlüssel: Der Schlüssel heißt in beiden Tabellen „docid“.
Name des Volltextkatalog: „FtiDocument“
SQL-Skripte
1. Ist die Volltextkomponente installiert?
SELECT fulltextserviceproperty('IsFulltextInstalled')
Wenn das Resultset „1“ zurück gibt, dann ist die Komponente auf dem Server installiert. Bei „0“ oder NULL sind die Voraussetzungen nicht erfüllt. Haben Sie eine geeignete Edition installiert?
2. Volltextkatalog anlegen
Folgenden SQL-Befehl an die Datenbank senden:
CREATE FULLTEXT CATALOG FtiDocument
3. Eindeutiger Tabellen-Index
Die Tabellen müssen einen eindeutigen, einspaltigen Index ohne NULL-Werte beinhalten. Falls noch kein geeigneter Index vorhanden ist, dann muss dieser mit CREATE UNIQUE INDEX
angelegt werden. In unserem Beispiel ist aber bereits ein Primärschlüssel vorhanden. Mit folgender Abfrage wird dessen Indexname ermittelt:
SELECT ccu.Constraint_Name
FROM sys.indexes si
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu
ON si.name = ccu.Constraint_Name
WHERE is_primary_key = 1
AND ccu.Table_Catalog = 'dmsdb'
AND ccu.Table_Name = 'document'
AND ccu.Column_Name = 'docid'
Der Indexname steht im Resultset in Spalte „Constraint_Name“, zum Beispiel „PK__DOCUMENT__ABC123„.
4. Volltextindex für eine Tabelle anlegen
Index für die Tabelle „document“. Sie können alle Text-Spalten hinzufügen, hier „name, docno, project, category, contenttext“. Die letzte Zeile WITH CHANGE_TRACKING AUTO
veranlasst eine automatische Index-Aktualisierung.
CREATE FULLTEXT INDEX ON document
(name, docno, project, category, contenttext)
KEY INDEX PK__DOCUMENT__ABC123 ON FtiDocument
WITH CHANGE_TRACKING AUTO
5. Weitere Tabellen
Wiederholen Sie die Schritte 3 und 4 für weitere Tabellen – in unserem Beispiel für „docarch“.
Weitere Informationen
MSDN: Erste Schritte mit der Volltextsuche
Office Manager: Zuvor das Datenfeld „contenttext“ anlegen
Man kann der Express (zum Glück) die Volltextsuche nachträglich hinzufügen indem man einfach das Setup von der Advanced ausführt.