KB963659 : vous recevez des messages d’erreur lors de l’exécution d’une population pour un grand index de texte intégral dans SQL Server 2008 ou SQL Server 2008 R2.

S’applique à : SQL Server 2008 StandardSQL Server 2008 EnterpriseSQL Server 2008 Developer

Microsoft distribue les correctifs Microsoft SQL Server 2008 sous la forme d’un fichier téléchargeable. Dans la mesure où les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs et les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008.

Symptômes


Symptôme 1Lorsque vous effectuez un remplissage pour un grand index de texte intégral dans Microsoft SQL Server 2008 ou dans Microsoft SQL Server 2008 R2, vous pouvez recevoir un message d’erreur dans le fichier journal de texte intégral. Le nombre de fois que ce message d’erreur est enregistré dépend de la taille de lot moins un. Par exemple, sur un ordinateur 32 bits, la taille du lot est 1 000, de sorte que l’erreur est enregistrée 999 fois. Le message d’erreur ressemble à ce qui suit :
Erreur «0x8004cb04 : la table de mots en mémoire est endommagée. Il s’agit d’un filtre, du séparateur de personnes ou d’un autre composant d’indexation défectueux. 's’est produite lors du remplissage de l’index en texte intégral pour la table ou l’affichage indexé' [smarsh]. [dbo]. [ArchiveMsgs] ' (table ou ID d’affichage indexé' 160719625 '; ID de base de données' 7 '), valeur de clé complète' 291484087 '. Une tentative d’indexation est effectuée.
Après avoir reçu ce message d’erreur, le message d’erreur suivant peut également s’afficher pour la taille de lot moins un :
<date> <Time> erreur spid28s' 0x80040e28 's’est produite au niveau du remplissage de l’index en texte intégral pour la table ou l’affichage indexé' [smarsh]. [dbo]. [ArchiveMsgs] ' (table ou ID d’affichage indexé' 160719625 '; ID de base de données' 7 '), valeur de clé complète' 199598211 '. Une tentative d’indexation est effectuée.
Après avoir reçu ce message d’erreur, le message d’erreur suivant peut également s’afficher pour la taille de lot moins un :
<date> <Time> erreur spid26s' 0x80043630 : le processus du démon de filtre MSFTEFD a expiré pour une raison inconnue. Cela risque de signaler un bogue dans un filtre, un séparateur de personnes ou un gestionnaire de protocole.» s’est produite au niveau du remplissage de l’index en texte intégral pour la table ou l’affichage indexé' [smarsh]. [dbo]. [ArchiveMsgs] ' (table ou ID d’affichage indexé' 160719625 '; ID de base de données' 7 '), valeur de clé complète' 14304130 '. Une tentative d’indexation est effectuée.
Symptôme 2Par ailleurs, vous remarquerez peut-être que le processus FDHOST. exe ne fonctionne pas correctement. Lorsque vous essayez d’exécuter une requête en texte intégral ou que vous effectuez un remplissage en texte intégral, le message suivant s’affiche à nouveau.
MSG 30053, niveau 16, état 102, ligne 1Word de dépassement du temps pour la chaîne de requête en texte intégral. Cela peut se produire si le séparateur de date a duré longtemps pour traiter la chaîne de requête en texte intégral, ou si un grand nombre de requêtes s’exécutent sur le serveur. Essayez de réexécuter la requête sous une charge plus légère.
Lorsque vous examinez les journaux SQLFT * pour ce catalogue, vous pouvez remarquer le message d’erreur suivant :
Le message d’erreur « 0x80004005 » s’est produit au niveau du remplissage d’index en texte intégral pour une table ou un affichage indexé' [DBNAME]. [dbo]. [TABLENAMe] ' (table ou ID d’affichage indexé' 1204001724 ', ID de base de données "5"), valeur de clé de texte intégral' 4 '. Une tentative d’indexation est effectuée.
Lorsque vous examinez le ErrorLog SQL, vous remarquez ce message d’erreur :
Erreur : 30089, gravité : 17, État : 1. le processus de l’hôte de démon de filtre FULLTEXT (FDHost) s’est arrêté de manière inattendue. Cela peut se produire si un composant linguistique incorrectement configuré ou défectueux, tel qu’un séparateur de passe, un filtre morphologique ou un filtre a entraîné une erreur irrémédiable lors de l’indexation ou du traitement des requêtes en texte intégral. Le processus est redémarré automatiquement.

Cause


Ce problème survient en raison d’un bogue dans la communication entre le processus sqlservr. exe et le processus fdhost. exe. Lorsque les lots sont envoyés à partir du processus sqlservr. exe vers le processus fdhost. exe, il est possible que la mémoire partagée sortante (OSM), qui représente la mémoire partagée à partir de sqlservr. exe dans fdhost. exe, dispose d’espace insuffisant pour s’adapter à la colonne suivante d’un document. Lorsque cela se produit, le processus sqlservr. exe envoie un message permettant d’informer le processus fdhost. exe de traiter toutes les données existantes du OSM. Bien que le processus fdhost. exe traite les données, la mémoire partagée entrante (ISM), qui est la mémoire partagée de fdhost. exe dans sqlservr. exe, peut être pleine. Dans cette situation, le processus fdhost. exe envoie un message « rembobiner » vers le processus sqlservr. exe. Ce message demande que le processus sqlservr. exe renvoie le dernier document à partir de la première colonne. Toutefois, lorsque le processus sqlservr. exe commence à renvoyer le document, il commence à la colonne 2 au lieu de la colonne 1. Les messages d’erreur mentionnés dans la section « symptômes » apparaissent alors.

Résolution


Informations sur les mises à jour cumulatives

SQL Server 2008 R2 Service Pack 2

Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 3. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative pour SQL Server 2008 R2 Service Pack 2, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2754552 Package de mise à jour cumulative 3 pour SQL Server 2008 R2 Service Pack 2
Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans la version de correctif du Service Pack 2 SQL Server 2008 R2 antérieur. Nous vous recommandons d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2730301 Builds SQL Server 2008 R2 publiées après la sortie de SQL Server 2008 R2 Service Pack 2

SQL Server 2008

Le correctif de ce problème a été publié pour la première fois dans la mise à jour cumulative 4 pour la version commerciale de SQL Server 2008. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative pour SQL Server 2008, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
963036 Package de mise à jour cumulative 4 pour SQL Server 2008
Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans l’ancienne version du correctif SQL Server 2008. Nous vous recommandons d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
956909 Builds SQL Server 2008 publiées après la sortie de SQL Server 2008

SQL Server 2008 Service Pack 1

Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 1 pour SQL Server 2008 Service Pack 1. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative pour SQL Server 2008, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
969099 Package de mise à jour cumulative 1 pour SQL Server 2008 Service Pack 1
Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans l’ancienne version du correctif SQL Server 2008. Nous vous recommandons d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
970365 Builds SQL Server 2008 publiées après la sortie de SQL Server 2008 Service Pack 1

Solution de contournement


Pour contourner ce problème, augmentez la taille d’ISM. Pour cela, configurez la variable ISM_Size à l’aide de la procédure stockée sp_fulltext_service . Pour afficher la valeur actuelle :sp_fulltext_service’ism_size' pour changer la valeur en 16 :sp_fulltext_service’ism_size', @value = 16Remarque: vous devrez redémarrer le service SQL Server pour que ce changement prenne effet.

Statut


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.

Informations supplémentaires


Ce problème n’empêche pas l’achèvement de la population. L’index en texte intégral dispose d’une logique de nouvelle tentative de réessayer qui continue à réexécuter l’entrée en échec jusqu’à ce qu’elle réussisse. Par conséquent, vous pouvez ignorer en toute sécurité les messages d’erreur. Les seuls effets secondaires potentiels connus sont qu’il faudra plus de temps pour que le remplissage soit terminé et que la croissance du journal de texte intégral augmente sensiblement pour signaler l’erreur. La logique de réessayer dans le code source entraîne une population réussie réussie sans être endommagée pour l’index, malgré le message d’erreur qui indique la corruption possible. Si vous exécutez une action de symptôme #2 décrite ci-dessus, les requêtes de recherche en texte intégral ou la population ne fonctionneront pas, car le composant FDHOST n’est pas dans un état correct pour fonctionner et vous devrez appliquer cette mise à jour cumulative.

Plus d’informations sur le package de mise à jour cumulative 4 pour SQL Server 2008

Pour plus d’informations sur les fichiers qui ont été modifiés et pour plus d’informations sur les conditions préalables à l’application du package de mise à jour cumulative contenant le correctif décrit dans cet article de la base de connaissances Microsoft, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
963036 Package de mise à jour cumulative 4 pour SQL Server 2008

Plus d’informations sur le package de mise à jour cumulative 1 pour SQL Server 2008 Service Pack 1

Pour plus d’informations sur les fichiers qui ont été modifiés et pour plus d’informations sur les conditions préalables à l’application du package de mise à jour cumulative contenant le correctif décrit dans cet article de la base de connaissances Microsoft, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
969099 Package de mise à jour cumulative 1 pour SQL Server 2008 Service Pack 1

Références


Pour plus d’informations sur la liste des builds disponibles après la publication de SQL Server 2008, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
956909 Builds SQL Server 2008 publiées après la sortie de SQL Server 2008
Pour plus d’informations sur le modèle de service incrémentiel pour SQL Server, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
935897 Un modèle de maintenance incrémentiel est disponible auprès de l’équipe SQL Server pour obtenir des correctifs pour les problèmes signalés
Pour plus d’informations sur le schéma d’appellation des mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
822499 Nouveau schéma d’affectation de noms pour les packages de mise à jour logicielle Microsoft SQL Server
Pour plus d’informations sur la terminologie des mises à jour logicielles, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft