sp_fulltext_table (Transact-SQL)

S’applique à :SQL ServerAzure Synapse Analytics

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

Important

Cette fonctionnalité sera supprimée dans une version future de 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 CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX et DROP FULLTEXT INDEX à la place.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_fulltext_table
    [ @tabname = ] N'tabname'
    , [ @action = ] 'action'
    [ , [ @ftcat = ] N'ftcat' ]
    [ , [ @keyname = ] N'keyname' ]
[ ; ]

Arguments

[ @tabname = ] N’tabname'

Nom d’une table en une ou deux parties. La table doit déjà exister dans la base de données actuelle. @tabname est nvarchar(517), sans valeur par défaut.

[ @action = ] 'action'

Action à effectuer. @action est nvarchar(50), sans valeur par défaut et peut être l’une de ces valeurs.

Valeur Description
Créer Crée les métadonnées d’un index de recherche en texte intégral pour la table référencée par @tabname et spécifie que les données d’index de recherche en texte intégral de cette table doivent résider dans @ftcat. Cette action désigne également l’utilisation de @keyname comme colonne 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 effectuée sur ce tableau tant que le catalogue de texte intégral n’est pas rempli.
Supprimer Supprime les métadonnées de l’index de recherche en texte intégral pour @tabname. Si l’index de recherche en texte intégral est actif, il est automatiquement désactivé avant d’être supprimé. Il n’est pas nécessaire de supprimer des colonnes avant de supprimer l’index de recherche en texte intégral.
Activer Active la possibilité de recueillir des données d’index de recherche en texte intégral pour @tabname, une fois qu’elles ont été désactivées. 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.

Cela ne remplit pas réellement l’index de recherche en texte intégral, mais inscrit simplement la table dans le catalogue de texte intégral dans le système de fichiers afin que les lignes de @tabname puissent être récupérées pendant la population d’index de recherche en texte intégral suivante.
Désactiver Désactive l’index de recherche en texte intégral pour @tabname afin que les données d’index de recherche en texte intégral ne puissent plus être collectées pour le @tabname. 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 n’a pas d’horodatage, démarrez une population complète de l’index de recherche en texte intégral. Démarre le suivi des modifications apportées à la table.

Le suivi des modifications de texte intégral ne suit pas les opérations WRITETEXT ou UPDATETEXT effectuées sur des colonnes indexées en texte intégral qui sont de type image, texte 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 = ] N’ftcat'

Nom de catalogue de texte intégral valide pour une action de création . Pour toutes les autres actions, ce paramètre doit avoir la valeur NULL. @ftcat est sysname, avec la valeur par défaut NULL.

[ @keyname = ] N’keyname'

Index unique unique et unique valide sur @tabname pour une action de création . Pour toutes les autres actions, ce paramètre doit avoir la valeur NULL. @keyname est sysname, avec la valeur par défaut NULL.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Jeu de résultats

Aucune.

Notes

Une fois qu’un index de recherche en texte intégral est désactivé pour une table particulière, l’index de recherche en texte intégral existant reste en place jusqu’à la population complète suivante ; Toutefois, cet index n’est pas utilisé, car SQL Server bloque les requêtes sur les tables désactivées.

Si la table est réactivée et que l’index n’est pas rempli à nouveau, l’ancien index est toujours disponible pour les requêtes sur les colonnes restantes, mais pas les colonnes avec texte intégral. 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.

Une fois qu’une table a été définie pour l’indexation de texte intégral, le basculement de la colonne clé unique de texte intégral d’un type de données à un autre, soit en modifiant le type de données de cette colonne, soit en modifiant la clé unique de texte intégral d’une colonne vers une autre, sans repopulation complète, peut entraîner un échec lors d’une requête ultérieure et en retournant le message d’erreur :

La conversion en type data_type a échoué pour la valeur de clé de recherche en texte intégral key_value.

Pour éviter cette erreur, supprimez la définition de texte intégral de ce tableau à l’aide de l’action de suppression et redéfinissez-la à l’aide sp_fulltext_table et sp_fulltext_columnsp_fulltext_table .

La taille de la colonne clé de texte intégral doit être de 900 octets ou moins. Il est recommandé que la taille de la colonne clé soit aussi petite que possible pour des raisons de performances.

Autorisations

Seuls les membres du rôle serveur fixe sysadmin , db_owner et db_ddladmin rôles de base de données fixes, ou un utilisateur disposant d’autorisations de référence sur le catalogue de texte intégral peut s’exécuter sp_fulltext_table.

Exemples

R. Activer 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 AdventureWorks2022;
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. Activer et propager les modifications de suivi

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

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

C. Supprimer un index de recherche en 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 AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO