Unsere Website verfügt über eine SQL Server 2008 R2 Express Edition-Datenbank mit Volltextindizierung für unsere Website-Suche. Jedes Mal, wenn ein neuer Datensatz in einer der indizierten Tabellen hinzugefügt oder aktualisiert wird, scheint der Indizierungsprozess niemals abgeschlossen zu sein.
Ich habe den Status in den letzten Wochen mithilfe der gleichen Abfrage überwacht, die auf dieser Website gefunden wurde: http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-search/2155/Why-is-this Bevölkerung, die so lange dauert
Folgendes wird beim Ausführen der Abfrage angezeigt (Klicken für volle Größe):
Die neuesten Datensätze in den indizierten Tabellen werden nie vollständig und können nicht durchsucht werden. Obwohl die Tabellen nicht sehr viele Daten enthalten, habe ich tagelang darauf gewartet, ob die Indizierung abgeschlossen ist, aber es ändert sich nichts.
Die einzige Möglichkeit, die Indizierung erfolgreich abzuschließen, besteht darin, entweder den Katalog neu zu erstellen oder alle Indizes zu löschen und neu zu erstellen.
Jedes Mal, wenn ich das getan habe, kehrt das gleiche Problem zurück, sobald der erste neue Datensatz hinzugefügt wird.
Hier sind die Serverstatistiken für den Fall:
- Quad-Core AMD Opteron 2,34 GHz
- 4 GB RAM
- Windows Server 2008 R2 Enterprise SP1 x64
- SQL Server 2008 R2 Express Edition mit Advanced Services x64
Hier ist ein Skript, das ich mithilfe von Cursorn erstellt habe, um vollständige Indizes für alle Tabellen mit einem Index für MSSQL2008 neu zu erstellen und aufzufüllen. Dies funktioniert in einer Produktionsumgebung mit Datenbanken, die von einem MSSQL 2000-Server migriert wurden. Ich habe die Änderungsnachverfolgung deaktiviert und diese gespeicherte Prozedur nur über den SQL Server-Agenten ausgeführt. Wenn Sie Express verwenden, können Sie ein VBS-Skript verwenden, um es über den Taskplaner auszuführen.
Im Skript war es wichtig, zuerst einen Neuaufbau für jeden Katalog durchzuführen, bevor versucht wird, die Indizes aufzufüllen.
Hat jemand eine Methode, die keine Cursor benötigt?
quelle
In der Regel wird empfohlen, den Volltextkatalog mithilfe von Triggern zu aktualisieren. Dies ist der Ansatz, den ich für mssql verwende. Da ich jedoch eine lokalisierte Anwendung mit mehreren spezifischen Anforderungen habe, die mich zu einer Lösung mit Triggern führen, funktioniert diese Lösung ab 2 Jahren zu 100%.
Überprüfen Sie Ihre Implementierung anhand dieses Beispiels .
quelle
Sie sind sich nicht sicher, welche Ursache in Ihrer Situation liegt. Dies kann jedoch passieren, nachdem eine Sicherung durchgeführt wurde. Nicht sicher, ob das in Ihrem Fall der Fall ist oder wie sich diese Tabelle von den anderen unterscheidet. Jetzt hast du mich neugierig. Haben Sie die SQL-Replikation aktiviert?
Für eine vorübergehende Korrektur würde ich in diesem Fall ein "Crawling" (Auffüllung) für die Tabelle durchführen.
http://msdn.microsoft.com/en-us/library/ms142575(v=sql.105).aspx
Verwenden Sie diesen Code:
quelle