KB2421014 - CORRECTIF : Message d’erreur « Une erreur grave s’est produite sur la commande actuelle » lors de l’utilisation de la fonction Freetexttable ou Containstable sur une vue indexée dans une requête CTE en SQL Server 2008 ou en SQL Server 2008 R2

S’applique à
SQL Server 2008 SQL Server 2008 R2 SQL Server 2008 Service Pack 2

Microsoft distribue les correctifs Microsoft SQL Server 2008 ou Microsoft SQL Server 2008 R2 en un seul fichier téléchargeable. Étant donné que les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la précédente version du correctif de SQL Server 2008 ou de SQL Server 2008 R2.

Symptômes

Supposons qu’un instance nommé dans Microsoft SQL Server 2008 ou Microsoft SQL Server 2008 R2 soit installé sur un serveur. Lorsque vous exécutez une requête CTE (Common table expression) qui utilise la fonction Freetexttable ou Containstable sur une vue indexée, la requête CTE échoue et une exception de violation d’accès se produit. En outre, le message d’erreur suivant s’affiche :

Remarque

Msg 0, Niveau 11, État 0, Ligne 0
Une grave erreur s’est produite sur la commande actuelle. Les résultats, s’il y en a, doivent être ignorés.

Par exemple, l’exception de violation d’accès se produit lorsque vous exécutez le code suivant :

WITH CTE AS  (select [Key] as Key, [Rank] from FREETEXTTABLE(< indexed view name >, *, '< search string >'))  SELECT * FROM CTE  

Résolution

Informations sur les mises à jour cumulatives

SQL Server 2008 Service Pack 2

Le correctif pour résoudre ce problème a été publié pour la première fois dans la mise à jour cumulative 4 pour SQL Server 2008 Service Pack 2. Pour plus d’informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft.

2527180 Package de mise à jour cumulative 4 pour SQL Server 2008 Service Pack 2Note Comme les builds sont cumulatives, chaque nouvelle version de correctif contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008. Microsoft vous recommande d’envisager d’appliquer la publication 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 :

2402659 Les versions de SQL Server 2008 publiées après SQL Server Service Pack 2 de Microsoft SQL Server 2008 ont été créées pour des Service Packs spécifiques SQL Server. Vous devez appliquer un correctif logiciel de SQL Server 2008 Service Pack 2 à une installation de SQL Server 2008 Service Pack 2. Par défaut, tout correctif logiciel fourni dans un Service Pack SQL Server est inclus dans le Service Pack SQL Server suivant.

SQL Server 2008 R2

Le correctif pour résoudre ce problème a été publié pour la première fois dans la mise à jour cumulative 4. Pour plus d’informations sur la procédure d’obtention de ce package de mise à jour cumulative pour SQL Server 2008 R2, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft.

2345451 package de mise à jour cumulative 4 pour SQL Server 2008 R2 Remarque Comme les builds sont cumulatives, chaque nouvelle version de correctif contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2. Nous vous recommandons d’envisager d’appliquer la version la plus récente du correctif 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 :

981356 Builds SQL Server 2008 R2 publiées après SQL Server 2008 R2

Solution de contournement

Pour contourner ce problème, appliquez l'une des méthodes suivantes :

  • Utilisez un affichage, une table temporaire ou une variable de table au lieu d’une CTE pour stocker les résultats intermédiaires.
  • Mettez à jour la requête pour utiliser une table dérivée ou une sous-requête. Cela élimine le besoin d’utiliser un CTE.

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Références

Pour plus d’informations sur l’utilisation des expressions de table courantes, reportez-vous au site Web de Microsoft à l’adresse suivante :

Comment utiliser les expressions de table courantes Pour plus d’informations sur la fonction Freetexttable (Transact-SQL), reportez-vous au site web de Microsoft à l’adresse suivante :

FREETEXTTABLE (Transact-SQL) Pour plus d’informations sur la fonction Containstable (Transact-SQL), reportez-vous au site web de Microsoft à l’adresse suivante :

CONTAINSTABLE (Transact-SQL) Pour plus d’informations sur la création de vues indexées, reportez-vous au site Web de Microsoft à l’adresse suivante :

Comment créer des vues indexées
        
Pour plus d’informations sur le modèle de maintenance incrémentielle pour SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft.

935897 Un modèle de service incrémentiel est disponible auprès de l'équipe SQL Server pour proposer des correctifs pour les problèmes signalés

Pour plus d’informations sur le schéma d’appellation pour les mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

822499 Nouveau schéma d’appellation pour les packages de mise à jour logicielle Microsoft SQL Server Pour plus d’informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft