Mise à niveau de la fonction de recherche en texte intégral

S’applique à :SQL ServerAzure SQL Database

SQL Server met à niveau la recherche en texte intégral pendant l’installation, ou lorsque vous attachez, restaurez ou copiez des fichiers de base de données et des catalogues de texte intégral à partir d’une version antérieure de SQL Server.

Mise à niveau d’une instance de serveur

Pour une mise à niveau sur place, une instance de SQL Server est configurée côte à côte avec l’ancienne version de SQL Server et les données sont migrées. Si l’ancienne version de SQL Server avait installé la recherche en texte intégral, une nouvelle version de la recherche en texte intégral est automatiquement installée. L’installation côte à côte signifie que chacun des composants suivants existe au niveau de l’instance de SQL Server.

Analyseurs lexicaux, générateurs de formes dérivées et filtres
Chaque instance utilise désormais son propre ensemble d'analyseurs lexicaux, de générateur de formes dérivées et de filtres, au lieu de s'appuyer sur la version de système d'exploitation de ces composants. Ces composants sont également plus faciles à inscrire et à configurer au niveau de l'instance. Pour plus d’informations, consultez Configurer et gérer les analyseurs lexicaux et générateurs de formes dérivées pour la recherche et Configurer et gérer des filtres pour la recherche.

Hôte de démon de filtre
Les démons de filtre de texte intégral sont des processus qui se chargent en toute sécurité ; par ailleurs, ils gèrent l'exécution des composants extensibles externes utilisés pour un index et une requête, par exemple les analyseurs lexicaux, les générateurs de formes dérivées et les filtres, sans altérer l'intégrité du moteur de texte intégral. Une instance de serveur utilise un processus multithread pour tous les filtres multithreads et un processus monothread pour tous les filtres monothreads.

Note

SQL Server 2008 (10.0.x) a introduit un compte de service pour le service lanceur FDHOST (MSSQLFDLauncher). Ce service propage les informations du compte de service aux processus hôtes du démon de filtre d’une instance spécifique de SQL Server. Pour plus d’informations sur la définition du compte de service, consultez Définir le compte du service du Lanceur de démon de filtre de texte intégral.

Dans SQL Server 2005 (9.x), chaque index de recherche en texte intégral réside dans un catalogue de texte intégral appartenant à un groupe de fichiers, possède un chemin d’accès physique et est traité comme un fichier de base de données. Dans SQL Server 2008 (10.0.x) et versions ultérieures, un catalogue de texte intégral est un objet logique ou virtuel qui contient un groupe d’index de recherche en texte intégral. Par conséquent, un nouveau catalogue de texte intégral n'est pas traité en tant que fichier de base de données avec un chemin d'accès physique. Toutefois, un nouveau groupe de fichiers est créé sur le même disque pendant la mise à niveau de tout catalogue de texte intégral qui contient des fichiers de données. Cela maintient le comportement d'E/S de l'ancien disque après la mise à niveau. Tout index de recherche en texte intégral de ce catalogue est placé dans le nouveau groupe de fichiers si le chemin d'accès racine existe. Si l'ancien chemin de catalogue de texte intégral est non valide, la mise à niveau conserve l'index de recherche en texte intégral dans le même groupe de fichiers comme table de base ou, pour une table partitionnée, dans le groupe de fichiers principal.

Options de mise à niveau de texte intégral

Lors de la mise à niveau d’une instance SQL Server, l’interface utilisateur vous permet de choisir l’une des options de mise à niveau de texte intégral suivantes.

Importer
Les catalogues de texte intégral sont importés. En général, l'importation est considérablement plus rapide que lors d'une reconstruction (rebuild). Par exemple, lorsque vous utilisez un seul processeur, l'importation s'exécute approximativement 10 fois plus vite que lors de la reconstruction. Toutefois, un catalogue de texte intégral importé n’utilise pas les nouveaux analyseurs de mots installés avec la dernière version de SQL Server. Pour garantir la cohérence dans les résultats de la requête, les catalogues de texte intégral doivent être reconstruits.

Note

Le processus de reconstruction peut s'exécuter en mode multithread, et si plus de 10 processeurs sont disponibles, la reconstruction peut s'effectuer plus vite que l'importation si vous la laissez utiliser tous les processeurs.

Si aucun catalogue de texte intégral n'est disponible, les index de recherche en texte intégral associés sont reconstruits. Cette option est disponible uniquement pour les bases de données SQL Server 2005 (9.x) .

Pour plus d'informations sur l'impact de l'importation de l'index de recherche en texte intégral, consultez « Considérations relatives au choix d'une option de mise à niveau », plus loin dans cette rubrique.

Recréation
Les catalogues de texte intégral sont reconstruits à l'aide des analyseurs lexicaux nouveaux et améliorés. La reconstruction des index peut prendre du temps, et une quantité importante de ressources en termes d'UC et de mémoire peut être requise après la mise à niveau.

Réinitialiser
Les catalogues de texte intégral sont réinitialisés. Lors de la mise à niveau à partir de SQL Server 2005 (9.x), les fichiers de catalogue de texte intégral sont supprimés, mais les métadonnées des catalogues de texte intégral et des index de recherche en texte intégral sont conservées. Après leur mise à niveau, tous les index de recherche en texte intégral ont le suivi des modifications désactivé et aucune analyse n'est démarrée automatiquement. Le catalogue reste vide tant que vous n'avez pas procédé manuellement à une alimentation complète, au terme de la mise à niveau.

Considérations relatives au choix d’une option de mise à niveau de texte intégral

Au moment de choisir l'option de mise à niveau pour votre mise à niveau, tenez compte des éléments suivants :

  • Avez-vous besoin de cohérence dans les résultats de la requête ?

    SQL Server installe de nouveaux analyseurs de mots à utiliser par recherche sémantique et en texte intégral. Les analyseurs lexicaux sont utilisés au moment de l'indexation et au moment de la requête. Si vous ne reconstruisez pas les catalogues de texte intégral, vos résultats de recherche peuvent être incohérents. Si vous émettez une requête de texte intégral qui recherche une expression qui est rompue différemment par l’analyseur de mots dans une version précédente de SQL Server et l’analyseur de mots actuel, un document ou une ligne contenant l’expression peut ne pas être récupéré. Cela est dû au fait que les expressions indexées ont été divisées à l'aide d'une logique différente de celle de la requête utilise. La solution consiste à réalimenter (reconstruire) les catalogues de texte intégral avec les nouveaux analyseurs lexicaux afin que le temps d'indexation et le comportement de cette requête soient identiques. Vous pouvez choisir l'option Reconstruire pour y parvenir, ou vous pouvez reconstruire manuellement après le choix de l'option Importer.

  • Certains index de recherche en texte intégral ont-ils été construits sur la base de colonnes clés de texte intégral de type Integer ?

    La reconstruction effectue, dans quelques cas, des optimisations internes qui améliorent le performances des requêtes de l'index de recherche en texte intégral mis à niveau. Spécifiquement, si vous avez des catalogues de texte intégral qui contiennent des index de recherche en texte intégral dont la colonne clé de texte intégral de la table de base correspond à un type de données Integer, la reconstruction permet d'obtenir une performance idéale des requêtes de texte intégral après la mise à niveau. Nous recommandons vivement que vous utilisiez l'option Reconstruire dans ce cas.

    Note

    Pour les index de texte intégral, nous recommandons que la colonne servant de clé de texte intégral corresponde à un type de données Integer. Pour plus d’informations, consultez Améliorer les performances des index de recherche en texte intégral.

  • Quelle est la priorité pour obtenir votre instance de serveur en ligne ?

    L'importation ou la reconstruction pendant la mise à niveau mobilise beaucoup de ressources processeur, ce qui retarde la mise à niveau et en ligne du reste de l'instance serveur. Si le fait d'avoir l'instance de serveur en ligne dès que possible est important et si vous êtes disposé à exécuter une alimentation manuelle après la mise à niveau, la réinitialisation est appropriée.

Garantie de résultats de requête cohérents après l’importation d’un index de recherche en texte intégral

Si un catalogue de texte intégral a été importé lors de la mise à niveau d’une base de données SQL Server 2005 (9.x), les incompatibilités entre la requête et le contenu de l’index de recherche en texte intégral peuvent se produire en raison de différences dans le comportement des analyseurs anciens et nouveaux. Dans ce cas, pour garantir une correspondance totale entre requêtes et contenu d'index de recherche en texte intégral, choisissez l'une des options suivantes :

  • reconstruisez le catalogue de texte intégral contenant l’index de recherche en texte intégral (ALTER FULLTEXT CATALOGnom_catalogue REBUILD) ;

  • publiez un FULL POPULATION sur l’index de recherche en texte intégral (ALTER FULLTEXT INDEX ON nom_table START FULL POPULATION).

Pour plus d’informations sur les analyseurs lexicaux, consultez Configurer et gérer les analyseurs lexicaux et générateurs de formes dérivées pour la recherche.

Mise à niveau des fichiers de mots parasites vers des listes de mots vides

Lorsqu’une base de données est mise à niveau à partir de SQL Server 2005 (9.x), les fichiers noise-word ne sont plus utilisés. Toutefois, les anciens fichiers noise-word sont stockés dans le FTDATA\ FTNoiseThesaurusBak dossier et vous pouvez les utiliser ultérieurement lors de la mise à jour ou de la génération des listes de mots vides SQL Server correspondantes.

Après la mise à niveau à partir de SQL Server 2005 (9.x) :

  • Si vous n’avez jamais ajouté, modifié ou supprimé des fichiers de mots parasites dans votre installation de SQL Server 2005 (9.x), la liste de mots vides système doit répondre à vos besoins.

  • Si vos fichiers noise-word ont été modifiés dans SQL Server 2005 (9.x), ces modifications sont perdues pendant la mise à niveau. Pour recréer ces mises à jour, vous devez recréer manuellement ces changements dans la liste de mots vides correspondante. Pour plus d’informations, consultez ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Si vous ne souhaitez pas appliquer de mots vides à vos index de recherche en texte intégral (par exemple, si vous avez supprimé ou effacé vos fichiers noise-word dans votre installation de SQL Server 2005 (9.x), vous devez désactiver la liste de mots vides pour chaque index de recherche en texte intégral mis à niveau. Exécutez l’instruction Transact-SQL suivante (en remplaçant la base de données par le nom de la base de données mise à niveau et la table par le nom de la table) :

    Use database;   
    ALTER FULLTEXT INDEX ON table  
       SET STOPLIST OFF;  
    GO  
    

    La clause STOPLIST OFF supprime le filtrage par mot vide et déclenche une alimentation de la table, sans filtrer les mots considérés comme des mots parasites.

Sauvegarde et catalogues de texte intégral importés

Pour les catalogues de texte intégral qui sont reconstruits ou réinitialisés pendant la mise à niveau (et pour les nouveaux catalogues de texte intégral), le catalogue de texte intégral est un concept logique et ne réside pas dans un groupe de fichiers. Par conséquent, pour sauvegarder un catalogue de texte intégral, vous devez identifier tous les groupes de fichiers contenant un index de recherche en texte intégral du catalogue et les sauvegarder un par un. Pour plus d’informations, consultez Sauvegarder et restaurer des catalogues et des index de recherche en texte intégral.

Pour les catalogues de texte intégral importés à partir de SQL Server 2005 (9.x), le catalogue de texte intégral est toujours un fichier de base de données dans son propre groupe de fichiers. Le processus de sauvegarde SQL Server 2005 (9.x) pour les catalogues de texte intégral s’applique toujours, sauf que le service MSFTESQL n’existe pas dans SQL Server. Pour plus d’informations sur le processus SQL Server 2005 (9.x), consultez Sauvegarde et restauration de catalogues de texte intégral dans la documentation en ligne de SQL Server 2005.

Migration d’index de recherche en texte intégral lors de la mise à niveau d’une base de données

Les fichiers de base de données et les catalogues de texte intégral d’une version précédente de SQL Server peuvent être mis à niveau vers une instance existante à l’aide de l’attachement, de la restauration ou de l’Assistant Copie de base de données. Les index de recherche en texte intégral SQL Server 2005 (9.x), le cas échéant, sont importés, réinitialisés ou reconstruits. La propriété de serveur upgrade_option détermine l’option de mise à niveau de texte intégral que l’instance de serveur utilise pendant ces mises à niveau de base de données.

Après l’attachement, la restauration ou la copie d’une base de données SQL Server 2005 (9.x) plus récente, la base de données devient disponible immédiatement et est automatiquement mise à niveau. Selon le volume de données indexé, l'importation peut prendre plusieurs heures et la reconstruction jusqu'à dix fois plus longtemps. Notez également que lorsque l'option de mise à niveau est Importer, si le catalogue de texte intégral n'est pas disponible, les index de recherche en texte intégral associés sont reconstruits.

Pour modifier le comportement de mise à niveau de texte intégral sur une instance de serveur

Considérations relatives à la restauration d’un catalogue de texte intégral SQL Server 2005 (9.x)

Une méthode de mise à niveau des données de texte intégral à partir d’une base de données SQL Server 2005 (9.x) consiste à restaurer une sauvegarde complète de base de données vers une instance plus récente de SQL Server.

Lors de l’importation d’un catalogue de texte intégral SQL Server 2005 (9.x), vous pouvez sauvegarder et restaurer la base de données et le fichier catalogue. Le comportement est le même que dans SQL Server 2005 (9.x) :

  • La sauvegarde de base de données complète inclut alors le catalogue de texte intégral. Pour faire référence au catalogue de texte intégral, utilisez son nom de fichier SQL Server 2005 (9.x), sysft_+catalog-name.

  • Si le catalogue de texte intégral est hors connexion, la sauvegarde échouera.

Pour plus d’informations sur la sauvegarde et la restauration de catalogues de texte intégral SQL Server 2005 (9.x), consultez Sauvegarde et restauration de catalogues de texte intégral et sauvegarde de fichiers et cataloguesde texte intégral dans la documentation en ligne de SQL Server 2005 (9.x).

Lorsque la base de données est restaurée sur une instance plus récente de SQL Server, un nouveau fichier de base de données est créé pour le catalogue de texte intégral. Le nom par défaut de ce fichier est ftrow_nom-catalogue.ndf. Par exemple, si vous catalog-name is cat1, le nom par défaut du fichier de base de données SQL Server serait ftrow_cat1.ndf. En revanche, si le nom par défaut est déjà utilisé dans le répertoire cible, le nouveau fichier de base de données serait nommé ftrow_nom-catalogue{GUID}.ndf, où GUID est l’identificateur global unique du nouveau fichier.

Après avoir importé les catalogues, les fichiers sys.database_files et sys.master_filesont mis à jour pour supprimer les entrées de catalogue et la colonne de chemin d’accès dans sys.fulltext_catalogs a la valeur Null.

Pour sauvegarder une base de données

Pour restaurer une sauvegarde de la base de données

Exemple

L’exemple suivant utilise la clause MOVE dans l’instruction RESTORE pour restaurer une base de données SQL Server 2005 (9.x) nommée ftdb1. Les fichiers de base de données, de journal et de catalogue SQL Server 2005 (9.x) sont déplacés vers de nouveaux emplacements sur l’instance de serveur SQL Server, comme suit :

  • Le fichier de base de données, ftdb1.mdf, est déplacé vers C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • Le fichier journal, ftdb1_log.ldf, est déplacé vers un répertoire de journal sur votre lecteur de disque journal, lecteur_journal:\répertoire_journal\ftdb1_log.ldf.

  • Les fichiers catalogue qui correspondent au catalogue sysft_cat90 sont déplacés vers C:\temp. Après avoir importé les index de recherche en texte intégral, ceux-ci sont automatiquement placés dans un fichier de base de données, C:\ftrow_sysft_cat90.ndf, et C:\temp est supprimé.

RESTORE DATABASE [ftdb1] FROM  DISK = N'C:\temp\ftdb1.bak' WITH  FILE = 1,  
   MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',  
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',  
    MOVE N'sysft_cat90' TO N'C:\temp';  

Attachement d’une base de données SQL Server 2005

Dans SQL Server 2008 (10.0.x) et versions ultérieures, un catalogue de texte intégral est un concept logique qui fait référence à un groupe d’index de recherche en texte intégral. Le catalogue de texte intégral est un objet virtuel qui n'appartient à aucun groupe de fichiers. Toutefois, lorsque vous attachez une base de données SQL Server 2005 (9.x) qui contient des fichiers catalogue de texte intégral sur une instance de serveur SQL Server plus récente, les fichiers catalogue sont attachés à partir de leur emplacement précédent, ainsi que les autres fichiers de base de données, identiques à ceux de SQL Server 2005 (9.x).

L’état de chaque catalogue de texte intégral attaché sur SQL Server est le même que lorsque la base de données a été détachée de SQL Server 2005 (9.x). Si une population d’index de recherche en texte intégral a été suspendue par l’opération de détachement, la population est reprise sur SQL Server et l’index de recherche en texte intégral devient disponible pour la recherche en texte intégral.

Si SQL Server ne trouve pas de fichier catalogue de texte intégral ou si le fichier de texte intégral a été déplacé pendant l’opération d’attachement sans spécifier de nouvel emplacement, le comportement dépend de l’option de mise à niveau de texte intégral sélectionnée. Si l’option de mise à niveau de texte intégral a la valeur Importer ou Reconstruire, le catalogue de texte intégral attaché est reconstruit. Si l’option de mise à niveau de texte intégral a la valeur Réinitialiser, le catalogue de texte intégral attaché est réinitialisé.

Pour plus d’informations sur le détachement et l’attachement d’une base de données, consultez Détachement et attachement de base de données (SQL Server), CREATE DATABASE (SQL Server Transact-SQL), sp_attach_db et sp_detach_db (Transact-SQL).

Voir aussi

Commencer à utiliser la recherche en texte intégral
Configurer et gérer les analyseurs lexicaux et générateurs de formes dérivées pour la recherche
Configurer et gérer des filtres pour la recherche