sp_fulltext_table (Transact-SQL)
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 Microsoft 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 INDEXy DROP FULLTEXT INDEX en su lugar. |
Sintaxis
sp_fulltext_table
[ @tabname= ] 'qualified_table_name'
, [ @action= ] 'action'
[
, [ @ftcat= ] 'fulltext_catalog_name'
, [ @keyname= ] 'unique_index_name'
]
Argumentos
[ @tabname=] 'qualified_table_name'
Se trata de un nombre de tabla con una o dos partes. La tabla debe existir en la base de datos actual. qualified_table_name es de tipo nvarchar(517) y no tiene ningún valor predeterminado.[ @action=] 'action'
Se trata de la acción que se va a realizar. action es de tipo nvarchar(50), sin valor predeterminado, y puede tener uno de los valores siguientes.Valor
Descripción
Create
Crea los metadatos de un índice de texto completo para la tabla a la que hace referencia qualified_table_name y especifica que los datos del índice de texto completo de esta tabla deben residir en fulltext_catalog_name. Esta acción también designa el uso de unique_index_name como la 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 ninguna búsqueda de texto completo sobre esta tabla hasta que se rellene el catálogo de texto completo.
Drop
Quita los metadatos del índice de texto completo de qualified_table_name. Si el índice de texto completo está activo, se desactiva automáticamente antes de quitarlo. No es necesario quitar columnas antes de quitar el índice de texto completo.
Activate
Activa la capacidad de recopilar datos de índice de texto completo de qualified_table_name, después de que se haya 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.
Tenga en cuenta que, en realidad, no se rellena el índice de texto completo; simplemente se registra la tabla en el catálogo de texto completo del sistema de archivos para que se puedan recuperar filas de qualified_table_name en el siguiente rellenado de índices de texto completo.
Deactivate
Desactiva el índice de texto completo de qualified_table_name para que ya no se puedan recopilar datos de índice de texto completo de qualified_table_name. 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 incluye marca de tiempo, inicia 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 operaciones WRITETEXT o UPDATETEXT realizadas en columnas que se han incluido en un índice de texto completo y que son 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.
Stop
Detiene un rellenado completo o incremental.
[ @ftcat=] 'fulltext_catalog_name'
Nombre de catálogo de texto completo existente válido para una acción create. Para todas las demás acciones, este parámetro debe ser NULL. fulltext_catalog_name es de tipo sysname y su valor predeterminado es NULL.[ @keyname=] 'unique_index_name'
Índice válido y único, que no admite valores NULL, de una columna de una sola clave en qualified_table_name para una acción create. Para todas las demás acciones, este parámetro debe ser NULL. unique_index_name es de tipo sysname y su valor predeterminado es NULL.
Valores de código de retorno
0 (correcto) o 1 (error)
Conjuntos de resultados
Ninguno
Comentarios
Una vez que se desactiva un índice de texto completo para una tabla determinada, el índice de texto completo existente permanece vigente hasta que se produce el siguiente rellenado; sin embargo, este índice no se utiliza debido a que Microsoft SQL Server bloquea las consultas que se realizan sobre tablas desactivadas.
Si se vuelve a activar la tabla y no se vuelve a llenar el índice, el índice antiguo sigue disponible para las consultas que se realizan sobre las columnas restantes habilitadas para texto completo, pero no sobre las nuevas. Las consultas que especifican una búsqueda en todas las columnas de texto completo encuentran datos de columnas eliminadas.
Tras definir una tabla para indización de texto completo, la modificación del tipo de datos de la columna de clave única de texto completo a otro tipo, ya sea mediante la modificación del tipo de datos de la columna o de la clave única de texto completo de una columna a otra, sin volver a realizar un rellenado completo, puede dar lugar a que una consulta posterior no se ejecute correctamente y se devuelva el mensaje de error: "Error de conversión al tipo de datos data_type del valor de la clave de búsqueda de texto key_value". Para evitarlo, quite la definición de texto completo de esta tabla utilizando la acción drop de sp_fulltext_table y cree de nuevo la definición utilizando 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 reducido posible por razones de rendimiento.
Permisos
Sólo los miembros del rol fijo de servidor sysadmin, los roles fijos de base de datos db_owner y db_ddladmin o un usuario con el permiso REFERENCE en el catálogo de texto completo pueden ejecutar sp_fulltext_table.
Ejemplos
A. Habilitar una tabla para la indización de texto completo
En el ejemplo siguiente se crean metadatos de índice de texto completo para la tabla Document de la base de datos AdventureWorks2008R2. Cat_Desc es un catálogo de texto completo. PK_Document_DocumentID es un índice único de una sola columna de Document.
USE AdventureWorks2008R2;
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. Activar y propagar los cambios de los que se ha realizado un 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 AdventureWorks2008R2;
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 AdventureWorks2008R2.
USE AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO
Vea también