sp_fulltext_table (Transact-SQL)

Se aplica a:SQL ServerAzure Synapse Analytics

Marca o quita la marca de una tabla para la indización de texto completo.

Importante

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Use CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX y DROP FULLTEXT INDEX en su lugar.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @tabname = ] N'tabname'

Nombre de tabla de una o dos partes. La tabla debe existir en la base de datos actual. @tabname es nvarchar(517), sin ningún valor predeterminado.

[ @action = ] 'action'

Acción que se va a realizar. @action es nvarchar(50), sin ningún valor predeterminado y puede ser uno de estos valores.

Valor Descripción
Creación Crea los metadatos de un índice de texto completo para la tabla a la que hace referencia @tabname y especifica que los datos de índice de texto completo de esta tabla deben residir en @ftcat. Esta acción también designa el uso de @keyname como columna de clave de texto completo. Este índice único ya debe estar presente y debe estar definido en una columna de la tabla.

No se puede realizar una búsqueda de texto completo en esta tabla hasta que se rellene el catálogo de texto completo.
Drop Quita los metadatos del índice de texto completo para @tabname. Si el índice de texto completo está activo, se desactiva automáticamente antes de quitarse. No es necesario quitar columnas antes de quitar el índice de texto completo.
Activar Activa la capacidad de recopilar datos de índice de texto completo para @tabname, una vez desactivado. Debe haber al menos una columna que participe en el índice de texto completo antes de que se pueda activar.

Un índice de texto completo se convierte automáticamente en activo para su rellenado en el momento en que se agrega la primera columna para la indización. Si se quita la última columna del índice, éste se desactiva. Si está en proceso un seguimiento de cambios, al activar un índice inactivo se inicia otro rellenado.

Esto no rellena realmente el índice de texto completo, pero simplemente registra la tabla en el catálogo de texto completo del sistema de archivos para que las filas de @tabname se puedan recuperar durante el siguiente rellenado de índice de texto completo.
Desactivar Desactiva el índice de texto completo para @tabname para que los datos de índice de texto completo ya no se puedan recopilar para el @tabname. Los metadatos del índice de texto completo permanecen y se puede volver a activar la tabla.

Si está activo el seguimiento de cambios, desactivar un índice activo inmoviliza el estado del índice: se detiene cualquier rellenado en curso y no se propagan más cambios al índice.
start_change_tracking Inicia un rellenado incremental del índice de texto completo. Si la tabla no tiene una marca de tiempo, inicie un rellenado completo del índice de texto completo. Inicia un seguimiento de cambios en la tabla.

El seguimiento de cambios de texto completo no realiza ningún seguimiento de las operaciones WRITETEXT o UPDATETEXT realizadas en columnas indexadas de texto completo que sean de tipo image, text o ntext.
stop_change_tracking Detiene el seguimiento de cambios en la tabla.
update_index Propaga el conjunto actual de cambios de los que se ha realizado el seguimiento al índice de texto completo.
start_background_updateindex Comienza a propagar los cambios de los que se ha realizado el seguimiento al índice de texto completo mientras se producen.
stop_background_updateindex Detiene la propagación de los cambios de los que se ha realizado el seguimiento al índice de texto completo mientras se producen.
start_full Inicia un rellenado completo del índice de texto completo de la tabla.
start_incremental Inicia un rellenado incremental del índice de texto completo de la tabla.
Detención Detiene un rellenado completo o incremental.

[ @ftcat = ] N'ftcat'

Un nombre de catálogo de texto completo válido y existente para una acción de creación . Para todas las demás acciones, este parámetro debe ser NULL. @ftcat es sysname, con un valor predeterminado de NULL.

[ @keyname = ] N'keyname'

Índice único no que acepta valores NULL válido en @tabname para una acción de creación . Para todas las demás acciones, este parámetro debe ser NULL. @keyname es sysname, con un valor predeterminado de NULL.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Ninguno.

Comentarios

Después de desactivar un índice de texto completo para una tabla determinada, el índice de texto completo existente permanece en su lugar hasta el siguiente rellenado completo; sin embargo, este índice no se usa porque SQL Server bloquea las consultas en tablas desactivadas.

Si se reactiva la tabla y el índice no se vuelve a rellenar, el índice anterior sigue estando disponible para las consultas en las columnas restantes, pero no nuevas habilitadas para texto completo. Las consultas que especifican una búsqueda en todas las columnas de texto completo encuentran datos de columnas eliminadas.

Una vez definida una tabla para la indexación de texto completo, cambiar la columna de clave única de texto completo de un tipo de datos a otro, ya sea cambiando el tipo de datos de esa columna o cambiando la clave única de texto completo de una columna a otra, sin que se produzca un error en el rellenado completo durante una consulta posterior y devolviendo el mensaje de error:

Error de conversión al tipo data_type para el valor de clave de búsqueda de texto completo key_value.

Para evitar este error, quite la definición de texto completo de esta tabla mediante la acción drop de sp_fulltext_table y vuelva a definirla mediante sp_fulltext_table y sp_fulltext_column.

La columna de clave de texto completo se debe definir para que tenga 900 bytes o menos. Se recomienda que el tamaño de la columna de clave sea lo más pequeño posible por motivos de rendimiento.

Permisos

Solo los miembros del rol fijo de servidor sysadmin , db_owner y db_ddladmin roles fijos de base de datos, o un usuario con permisos de referencia en el catálogo de texto completo puede ejecutar sp_fulltext_table.

Ejemplos

A Habilitación de una tabla para la indexación de texto completo

En el ejemplo siguiente se crean los metadatos de índice de texto completo para la tabla Document de la base de datos AdventureWorks. Cat_Desc es un catálogo de texto completo. PK_Document_DocumentID es un índice único de una sola columna de 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. Activación y propagación de cambios de seguimiento

En el ejemplo siguiente se activan y comienzan a propagar los cambios de los que se ha hecho un seguimiento al índice de texto completo mientras se producen.

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

C. Quitar un índice de texto completo

En este ejemplo se quitan los metadatos de índice de texto completo de la tabla Document de la base de datos AdventureWorks.

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