Compartir a través de


sp_fulltext_table (Transact-SQL)

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

Nota importanteImportante

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.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

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