sp_fulltext_table (Transact-SQL)
Se aplica a: SQL Server Azure 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 devolver 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
Contenido relacionado
- INDEXPROPERTY (Transact-SQL)
- OBJECTPROPERTY (Transact-SQL)
- sp_help_fulltext_tables (Transact-SQL)
- sp_help_fulltext_tables_cursor (Transact-SQL)
- sp_helpindex (Transact-SQL)
- Procedimientos almacenados del sistema (Transact-SQL)
- Procedimientos almacenados de búsqueda de texto completo y búsqueda semántica (Transact-SQL)