Partager via


sp_fulltext_table (Transact-SQL)

Active ou désactive l'indexation de texte intégral pour une table.

Important

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez plutôt CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX et DROP FULLTEXT INDEX.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

sp_fulltext_table 
   [ @tabname= ] 'qualified_table_name'         
      , [ @action= ] 'action' 
   [ 
      , [ @ftcat= ] 'fulltext_catalog_name'         
      , [ @keyname= ] 'unique_index_name' 
   ]

Arguments

  • [ @tabname=] 'qualified_table_name'
    Nom de table en une ou deux parties. Cette table doit exister dans la base de données actuelle. L'argument qualified_table_nameest de type nvarchar(517), sans valeur par défaut.

  • [ @action=] 'action'
    Action à exécuter. L'argument action est de type nvarchar(50), il n'a pas de valeur par défaut et peut prendre l'une des valeurs ci-après.

    Valeur

    Description

    Create

    Crée les métadonnées pour un index de texte intégral sur la table désignée par qualified_table_name et spécifie que les données de cet index de texte intégral doivent se trouver à l'emplacement fulltext_catalog_name. Cette opération permet également de désigner unique_index_name comme colonne de clé de texte intégral. Cet index unique doit déjà exister et être défini sur une colonne de la table.

    Une recherche en texte intégral ne peut pas être réalisée vis à vis de cette table tant que le catalogue de texte intégral n'est pas rempli.

    Drop

    Supprime les métadonnées correspondant à l'index de texte intégral sur qualified_table_name. Si cet index est actif, il est automatiquement désactivé avant d'être supprimé. Il n'est pas nécessaire de supprimer les colonnes avant de supprimer l'index de texte intégral.

    Activate

    Réactive la collecte de données d'index de texte intégral pour la table qualified_table_name. Une colonne au moins doit faire partie de l'index de texte intégral pour pouvoir activer cette option.

    Un index de texte intégral est automatiquement activé (au niveau du remplissage) dès l'ajout de la première colonne à indexer. Si la dernière colonne est supprimée de l'index, celui-ci devient inactif. Si le suivi des modifications est activé, l'activation d'un index inactif démarre un nouveau remplissage.

    Notez que le remplissage de l'index n'est pas réellement effectué, mais que la table est inscrite dans le catalogue de texte intégral du système de fichiers afin que les lignes de la table qualified_table_name puissent être lues au cours du remplissage suivant de l'index de texte intégral.

    Deactivate

    Désactive l'index de texte intégral pour qualified_table_name afin que les données de cet index ne puissent plus être collectées pour qualified_table_name. Les métadonnées de l'index de texte intégral sont conservées et la table peut être réactivée.

    Si le suivi des modifications est activé, la désactivation d'un index actif gèle l'état de l'index : tout remplissage en cours est arrêté et aucune modification supplémentaire n'est diffusée à l'index.

    start_change_tracking

    Démarre un remplissage incrémentiel de l'index de texte intégral. Si la table ne dispose pas de données d'une colonne de type timestamp, démarre un remplissage complet de l'index de texte intégral. Démarre le suivi des modifications apportées à la table.

    Le suivi des modifications en texte intégral ne porte sur aucune opération WRITETEXT ou UPDATETEXT réalisée sur les colonnes indexées en texte intégral de type image, text ou ntext.

    stop_change_tracking

    Arrête le suivi des modifications apportées à la table.

    update_index

    Diffuse le jeu courant des modifications suivies à l'index de texte intégral.

    start_background_updateindex

    Démarre la diffusion instantanée des modifications suivies à l'index de texte intégral.

    stop_background_updateindex

    Arrête la diffusion instantanée des modifications suivies à l'index de texte intégral.

    start_full

    Démarre un remplissage complet de l'index de texte intégral de la table.

    start_incremental

    Démarre un remplissage incrémentiel de l'index de texte intégral de la table.

    Stop

    Arrête un remplissage complet ou incrémentiel.

  • [ @ftcat=] 'fulltext_catalog_name'
    Nom valide d'un catalogue de texte intégral existant pour une action create. Pour toutes les autres actions, ce paramètre doit avoir la valeur NULL. L'argument fulltext_catalog_name est de type sysname, avec NULL comme valeur par défaut.

  • [ @keyname=] 'unique_index_name'
    Index unique n'acceptant pas les valeurs NULL et dont la clé est formée d'une seule colonne sur la table qualified_table_name pour une action create. Pour toutes les autres actions, ce paramètre doit avoir la valeur NULL. L'argument unique_index_name est de type sysname, avec NULL comme valeur par défaut.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Jeux de résultats

Aucun

Notes

Après la désactivation d'un index de texte intégral pour une table spécifique, l'index de texte intégral existant n'est pas modifié avant le remplissage complet suivant ; toutefois, cet index n'est pas utilisé car MicrosoftSQL Server bloque les requêtes sur les tables désactivées.

Si la table est réactivée et que l'index n'a pas été rempli à nouveau, l'ancien index est toujours disponible pour les requêtes sur les colonnes qui permettent la recherche en texte intégral et qui existent déjà, à l'exception des nouvelles colonnes. Les données des colonnes supprimées sont récupérables par les requêtes dans lesquelles une recherche en texte intégral sur toute une colonne est spécifiée.

Lorsque vous avez défini une table pour une indexation de texte intégral, échangez les colonnes de clés unique de texte intégral d'un type de données en un autre en changeant le type de données de cette colonne ou en changeant la clé unique de texte intégral d'une colonne à une autre. Un remplissage incomplet peut provoquer un échec qui se produirait à la prochaine requête en provoquerait l'affichage du message d'erreur suivant : « Échec de la conversion vers le type de données data_type pour la valeur de la clé de recherche en texte intégral key_value. » Pour éviter cette situation, supprimez la définition de texte intégral de cette table à l'aide de l'action drop de sp_fulltext_table et redéfinissez-la à l'aide de sp_fulltext_table et de sp_fulltext_column.

La taille de la colonne de clé de texte intégral doit être de 900 octets ou moins. Pour des raisons de performances, il est recommandé de limiter au minimum la taille de la colonne de clé.

Autorisations

Seuls les membres du rôle de serveur fixe sysadmin, les rôles de base de données fixe db_owner et db_ddladmin ou les utilisateurs disposant d'autorisations de référence sur le catalogue de texte intégral peuvent exécuter sp_fulltext_table.

Exemples

A. Activation d'une table pour l'indexation de texte intégral

L'exemple ci-dessous crée des métadonnées d'index de texte intégral pour la table Document de la base de données AdventureWorks. Cat_Desc est un catalogue de texte intégral. PK_Document_DocumentID est un index à colonne unique sur Document.

USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'create', 'Cat_Desc', 'PK_Document_DocumentID';
--Add some columns
EXEC sp_fulltext_column 'Production.Document','DocumentSummary','add';
-- Activate the full-text index
EXEC sp_fulltext_table 'Production.Document','activate';
GO

B. Activation et propagation du suivi des modifications

L'exemple ci-dessous active et commence la propagation des modifications suivies à l'index de texte intégral.

USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO

C. Suppression d'un index de texte intégral

L'exemple ci-dessous supprime les métadonnées d'index de texte intégral pour la table Document de la base de données AdventureWorks.

USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO