Notre site Web dispose d'une base de données SQL Server 2008 R2 Express Edition avec indexation en texte intégral pour notre recherche de site Web. Chaque fois qu'un nouvel enregistrement est ajouté ou mis à jour dans l'une des tables indexées, le processus d'indexation ne semble jamais se terminer.
J'ai surveillé l'état au cours des dernières semaines en utilisant essentiellement la même requête trouvée sur ce site: http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-search/2155/Why-is-this -population-si-longue
Voici ce que je vois lorsque j'exécute la requête (cliquez pour agrandir):
Les enregistrements les plus récents des tables indexées ne sont jamais terminés et ne peuvent pas être recherchés. Même s'il n'y a pas beaucoup de données dans les tables, j'ai attendu des jours pour voir si l'indexation se termine, mais rien ne change jamais.
La seule façon dont je suis en mesure de réussir l'indexation est de reconstruire le catalogue ou de supprimer et recréer tous les index.
Chaque fois que je l'ai fait, le même problème finit par revenir dès que le premier nouvel album est ajouté.
Voici les statistiques du serveur au cas où:
- Quad-Core AMD Opteron 2,34 GHz
- 4 Go de RAM
- Windows Server 2008 R2 Enterprise SP1 x64
- SQL Server 2008 R2 Express Edition avec Advanced Services x64
Voici un script que j'ai créé à l'aide de curseurs pour reconstruire et remplir des index complets pour toute table qui en a un pour MSSQL2008. Cela fonctionne dans un environnement de production avec des bases de données migrées à partir d'un serveur MSSQL 2000. J'ai désactivé le suivi des modifications et je viens d'exécuter cette procédure stockée via l'Agent SQL Server. Si vous utilisiez express, vous pouvez utiliser un script VBS pour l'exécuter via le Planificateur de tâches.
Il était important dans le script de faire une reconstruction d'abord sur chaque catalogue avant d'essayer de remplir les index.
Quelqu'un at-il une méthode qui ne nécessite pas de curseurs?
la source
Il est généralement recommandé de mettre à jour le catalogue de texte intégral à l'aide de déclencheurs. C'est l'approche que j'utilise sur mssql, mais dans mon cas, parce que j'ai une application localisée avec plusieurs exigences spécifiques qui me conduisent à une solution utilisant des déclencheurs, cette solution fonctionne à 100% à partir de 2 ans en arrière.
Passez en revue votre implémentation par rapport à cet exemple .
la source
Vous ne savez pas quelle est la cause principale de votre situation, mais cela peut se produire après une sauvegarde. Je ne sais pas si c'est ce qui se passe dans votre cas ou en quoi ce tableau est différent des autres. Maintenant tu m'as curieux. La réplication SQL est-elle activée?
Pour un correctif temporaire, j'effectuerais une "exploration" (population) sur la table lorsque cela se produit.
http://msdn.microsoft.com/en-us/library/ms142575(v=sql.105).aspx
Utilisez ce code:
la source