Mise à niveau de la fonction de recherche en texte intégral
La mise à niveau de la recherche en texte intégral vers SQL Server 2014 s’effectue pendant l’installation et lorsque les fichiers de base de données et les catalogues de texte intégral de la version antérieure de SQL Server sont joints, restaurés ou copiés à l’aide de l’Assistant Copie de base de données.
Cette rubrique traite les aspects suivants de la mise à niveau de la recherche en texte intégral :
Considérations relatives au choix d’une option de mise à niveau Full-Text
Attachement d'une base de données SQL Server 2005 à SQL Server 2014
Mise à niveau d'une instance de serveur
Pour une mise à niveau sur place, une instance de SQL Server 2014 est configurée côte à côte avec l’ancienne version de SQL Server, et les données sont migrées. Si la recherche en texte intégral est installée dans l’ancienne version de SQL Server, 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 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.
Notes
SQL Server 2008 a introduit un compte de service pour le service FDHOST Launcher (MSSQLFDLauncher). Ce service propage les informations du compte de service aux processus hôtes de démon de filtre d’un 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, chaque index de texte intégral réside dans un catalogue de texte intégral qui appartient à un groupe de fichiers, a un chemin d’accès physique et est traité comme un fichier de base de données. Dans SQL Server 2008 et versions ultérieures, un catalogue de texte intégral est un objet logique ou virtuel qui contient un groupe d’index de 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.
Notes
SQL Server instructions Transact-SQL DDL 2005 qui spécifient des catalogues de texte intégral continuent de fonctionner correctement.
Options de mise à niveau de texte intégral
Lors de la mise à niveau d’un serveur instance vers SQL Server 2014, 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 disjoncteurs 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.
Notes
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 SQL Server bases de données 2005.
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.
Reconstruire
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, 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 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 2014 installe de nouveaux disjoncteurs à utiliser par Full-Text et la recherche sémantique. 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 le disjoncteur dans une version précédente de SQL Server et le disjoncteur actuel, il se peut qu’un document ou une ligne contenant l’expression ne soit pas 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.
Notes
Pour les index de texte intégral dans SQL Server 2014, nous recommandons que la colonne servant de clé de texte intégral soit un type de données entier. 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 SQL Server 2005
Si un catalogue de texte intégral a été importé lors de la mise à niveau d’une base de données SQL Server 2005 vers SQL Server 2014, des incompatibilités entre la requête et le contenu de l’index de texte intégral peuvent se produire en raison de différences dans le comportement des anciens et nouveaux analyseurs de mots. 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
SQL Server 2005 ont été remplacés par des mots vides dans SQL Server 2008 et versions ultérieures. Lorsqu’une base de données est mise à niveau vers SQL Server 2014 à partir de SQL Server 2005, les fichiers word à bruit ne sont plus utilisés. Toutefois, les anciens fichiers noise-word sont stockés dans le dossier FTDATA\ FTNoiseThesaurusBak et vous pouvez les utiliser ultérieurement lors de la mise à jour ou de la création des listes de SQL Server 2014 correspondantes.
Après la mise à niveau à partir de SQL Server 2005 :
Si vous n’avez jamais ajouté, modifié ou supprimé de fichiers noise-word dans votre installation de SQL Server 2005, la liste de stop du système doit répondre à vos besoins.
Si vos fichiers noise-word ont été modifiés dans SQL Server 2005, ces modifications sont perdues pendant la mise à niveau. Pour recréer ces mises à jour, vous devez recréer manuellement ces modifications dans la liste de SQL Server 2008 correspondante. Pour plus d’informations, consultez ALTER FULLTEXT STOPLIST (Transact-SQL).
Si vous ne souhaitez pas appliquer de mots vides à vos index de texte intégral (par exemple, si vous avez supprimé ou effacé vos fichiers de mots sonores dans votre installation SQL Server 2005), vous devez désactiver la liste de mots vides pour chaque index de 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 dans SQL Server 2014, vous devez identifier chaque groupe de fichiers qui contient un index de texte intégral du catalogue et sauvegarder chacun d’eux, 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, 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 pour les catalogues de texte intégral s’applique toujours, sauf que le service MSFTESQL n’existe pas dans SQL Server 2014. Pour plus d’informations sur le processus SQL Server 2005, consultez Sauvegarde et restauration de catalogues Full-Text dans SQL Server documentation en ligne de 2005.
Migration d'index de recherche en texte intégral lors de la mise à niveau d'une base de données vers SQL Server 2014
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 un serveur SQL Server 2014 existant instance à l’aide de l’Assistant Attachement, Restauration ou Copie de base de données. SQL Server 2005, les index de recherche en texte intégral, 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.
Une fois que vous avez attaché, restauré ou copié une base de données SQL Server 2005 vers SQL Server 2014, la base de données devient immédiatement disponible 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
Transact-SQL : utiliser l’action upgrade_option de sp_fulltext_service
SQL Server Management Studio : utilisez l’option de mise à niveau de texte intégral de la boîte de dialogue Propriétés du serveur. Pour plus d’informations, consultez Gérer et surveiller la recherche en texte intégral pour une instance de serveur.
Considérations relatives à la restauration d'un catalogue de texte intégral SQL Server 2005 vers SQL Server 2014
Une méthode de mise à niveau des données de texte intégral d’une base de données SQL Server 2005 vers SQL Server 2014 consiste à restaurer une sauvegarde de base de données complète vers SQL Server 2014.
Lors de l’importation d’un catalogue de texte intégral SQL Server 2005, 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 :
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, 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 SQL Server catalogues de texte intégral 2005, consultez Sauvegarde et restauration de catalogues Full-Text et Sauvegarde et restauration de fichiers et catalogues Full-Textdans SQL Server documentation en ligne de 2005.
Lorsque la base de données est restaurée le SQL Server 2014, 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 est cat1
, le nom par défaut du fichier de base de données SQL Server 2014 est 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
Sauvegardes du journal des transactions (SQL Server) (mode de récupération complète uniquement)
Pour restaurer une sauvegarde de la base de données
Restaurations complètes de bases de données (mode de récupération simple)
Restaurations complètes de bases de données (mode de récupération complète)
Exemple
L’exemple suivant utilise la clause MOVE dans l’instruction RESTORE pour restaurer une base de données SQL Server 2005 nommée ftdb1
. Les fichiers de base de données, de journal et de catalogue SQL Server 2005 sont déplacés vers de nouveaux emplacements sur le serveur SQL Server 2014 instance, comme suit :
Le fichier de base de données,
ftdb1.mdf
, est déplacé versC:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL12.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 versC:\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 à SQL Server 2014
Dans SQL Server 2008 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 joignez une base de données SQL Server 2005 qui contient des fichiers de catalogue de texte intégral à un serveur SQL Server 2014 instance, les fichiers catalogue sont joints à partir de leur emplacement précédent avec les autres fichiers de base de données, comme dans SQL Server 2005.
L’état de chaque catalogue de texte intégral joint sur SQL Server 2014 est le même que lorsque la base de données a été détachée de SQL Server 2005. Si une population d’index de recherche en texte intégral a été suspendue par l’opération de détachement, la population reprend le SQL Server 2014 et l’index de recherche en texte intégral devient disponible pour la recherche en texte intégral.
Si SQL Server 2014 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