Actualizar la búsqueda de texto completo

Se aplica a:SQL ServerAzure SQL Database

SQL Server actualiza la búsqueda de texto completo durante la instalación, o al adjuntar, restaurar o copiar archivos de base de datos y catálogos de texto completo de una versión anterior de SQL Server.

Actualizar una instancia de servidor

Para una actualización local, una instancia de SQL Server se configura en paralelo con la versión anterior de SQL Server y se migran los datos. Si la versión anterior de SQL Server tenía instalada la búsqueda de texto completo, se instala automáticamente una nueva versión de búsqueda de texto completo. La instalación en paralelo significa que cada uno de los siguientes componentes existe en el nivel de instancia de SQL Server.

Separadores de palabras, lematizadores y filtros
Ahora, cada instancia usa su propio conjunto de separadores de palabras, lematizadores y filtros en lugar de depender de la versión de estos componentes existente en el sistema operativo. También es más fácil registrar y configurar estos componentes en cada una de las instancias. Para obtener más información, vea Configurar y administrar separadores de palabras y lematizadores para la búsqueda y Configurar y administrar filtros para búsquedas.

Host de demonio de filtro
Los hosts de demonio de filtro de texto completo son procesos que cargan y controlan de forma segura los componentes extensibles externos que se usan en los índices y en las consultas, como por ejemplo, los separadores de palabras, los lematizadores y los filtros, sin poner en peligro la integridad del motor de búsqueda de texto completo. Una instancia del servidor utiliza un proceso multiproceso para todos los filtros multiproceso y un proceso de un solo subproceso para todos los filtros de un solo subproceso.

Nota:

SQL Server 2008 (10.0.x) introdujo una cuenta de servicio para el servicio iniciador de FDHOST (MSSQLFDLauncher). Este servicio propaga la información de la cuenta de servicio a los procesos de host de demonio de filtro de una instancia específica de SQL Server. Para obtener más información sobre cómo configurar la cuenta de servicio, vea Establecer la cuenta del servicio para el selector del demonio de filtro completo.

En SQL Server 2005 (9.x), cada índice de texto completo reside en un catálogo de texto completo que pertenece a un grupo de archivos, tiene una ruta de acceso física y se trata como un archivo de base de datos. En SQL Server 2008 (10.0.x) y versiones posteriores, un catálogo de texto completo es un objeto lógico o virtual que contiene un grupo de índices de texto completo. Por consiguiente, no se trata a cada nuevo catálogo de texto completo como un archivo de base de datos con una ruta de acceso física. Sin embargo, durante la actualización de cualquier catálogo de texto completo que contiene archivos de datos, se crea un nuevo grupo de archivos en el mismo disco. Esto conserva el comportamiento de E/S del disco antiguo después de la actualización. Si la ruta de acceso raíz existe, todos los índices de texto completo del catálogo se situarán en el nuevo grupo de archivos. Si la ruta de acceso al catálogo de texto completo anterior no es válida, la actualización mantiene el índice de texto completo en el mismo grupo de archivos que la tabla base o, si se trata de una tabla con particiones, en el grupo de archivos principal.

Opciones de actualización de texto completo

Al actualizar una instancia de SQL Server, la interfaz de usuario le permite elegir una de las siguientes opciones de actualización de texto completo.

Importar
Se importan los catálogos de texto completo. Normalmente, el proceso de importación es significativamente más rápido que el de regeneración. Por ejemplo, si se usa solo una CPU, importar es aproximadamente 10 veces más rápido que volver a generar. Sin embargo, un catálogo de texto completo importado no usa los nuevos separadores de palabras instalados con la versión más reciente de SQL Server. Para garantizar la coherencia de los resultados de consulta, los catálogos de texto completo se tienen que recompilar.

Nota:

La recompilación se puede ejecutar en modo de varios subprocesos; además, si hay más de 10 CPU disponibles y permite que el proceso de recompilación las use todas, dicho proceso puede resultar más rápido que el de importación.

Si un catálogo de texto completo no está disponible, se vuelven a generar los índices de texto completo asociados. Esta opción solo está disponible para bases de datos de SQL Server 2005 (9.x) .

Para obtener información sobre el impacto de importar un índice de texto completo, vea "Consideraciones sobre la elección de una opción de actualización de texto completo" más adelante en este tema.

Recompilación
Los catálogos de texto completo se vuelven a generar con los separadores de palabras nuevos y mejorados. El proceso de recompilación de los índices puede llevar cierto tiempo y podría ser necesaria una cantidad significativa de CPU y de memoria después de la actualización.

Reset
Los catálogos de texto completo se restablecen. Al actualizar desde SQL Server 2005 (9.x), se quitan los archivos de catálogo de texto completo, pero se conservan los metadatos de los catálogos de texto completo y los índices de texto completo. Después de actualizarse, todos los índices de texto completo quedan deshabilitados para el seguimiento de cambios y los rastreos no se inician de forma automática. El catálogo permanecerá vacío hasta que se emita manualmente un rellenado completo después de que se complete la actualización.

Consideraciones sobre la elección de una opción de actualización de texto completo

Cuando elija la opción de actualización, tenga en cuenta lo siguiente:

  • ¿Necesita coherencia en los resultados de consulta?

    SQL Server instala nuevos separadores de palabras para su uso por la búsqueda de texto completo y la búsqueda semántica. Los separadores de palabras se usan en el momento de la indización y en el momento de la consulta. Si no recompila los catálogos de texto completo, los resultados de la búsqueda pueden ser incoherentes. Si emite una consulta de texto completo que busca una frase rota de forma diferente por el separador de palabras en una versión anterior de SQL Server y el separador de palabras actual, es posible que no se recupere un documento o fila que contenga la frase. Esto se debe a que las frases indizadas se separaron mediante una lógica diferente de la que está usando la consulta. La solución es volver a rellenar (volver a generar) los catálogos de texto completo con los nuevos separadores de palabras de modo que los comportamientos en el momento de la indización y en el momento de la consulta sean idénticos. Puede elegir la opción Recompilar para realizar esta acción, o puede recompilar manualmente después de elegir la opción Importar.

  • ¿Se han generado índices de texto completo en columnas de clave de texto completo cuyo tipo de datos es Integer?

    La regeneración realiza optimizaciones internas que, en algunos casos, mejoran el rendimiento de las consultas del índice de texto completo actualizado. En concreto, si tiene catálogos de texto completo que contienen índices de texto completo para los que la columna de clave de texto completo de la tabla base es un tipo de datos Integer, al volver a generarlos, se logra un rendimiento ideal de las consultas de texto completo después de la actualización. En este caso, es muy recomendable el uso de la opción Volver a generar .

    Nota:

    Para los índices de texto completo, se recomienda que la columna que actúa como la clave de texto completo sea un tipo de dato entero. Para obtener más información, vea Mejorar el rendimiento de los índices de texto completo.

  • ¿Cuál es la prioridad para poner en línea la instancia del servidor?

    El proceso de importación o regeneración durante la actualización consume muchos recursos de la CPU, lo que retrasa la actualización y puesta en línea del resto de la instancia del servidor. Si es importante poner en línea lo antes posible la instancia del servidor y desea ejecutar manualmente el rellenado después de la actualización, la opción Restablecer resulta adecuada.

Garantizar resultados de consulta coherentes después de importar un índice de texto completo

Si se importó un catálogo de texto completo al actualizar una base de datos de SQL Server 2005 (9.x), es posible que se produzcan discrepancias entre la consulta y el contenido del índice de texto completo debido a diferencias en el comportamiento de los separadores de palabras antiguos y nuevos. En este caso, para garantizar una coincidencia total entre las consultas y el contenido del índice de texto completo, elija una de las opciones siguientes:

  • Recompile el catálogo de texto completo que contiene el índice de texto completo (ALTER FULLTEXT CATALOGcatalog_name REBUILD)

  • Emita un rellenado completo en el índice de texto completo (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION).

Para obtener más información sobre los separadores de palabras, vea Configurar y administrar separadores de palabras y lematizadores para la búsqueda.

Actualizar archivos de palabras irrelevantes a listas de palabras irrelevantes

Cuando se actualiza una base de datos desde SQL Server 2005 (9.x), los archivos de palabra irrelevante ya no se usan. Sin embargo, los archivos antiguos de palabra irrelevante se almacenan en la carpeta FTDATA\ FTNoiseThesaurusBak y puede usarlos más adelante al actualizar o compilar las listas de palabras irrelevantes SQL Server correspondientes.

Después de actualizar desde SQL Server 2005 (9.x):

  • Si nunca ha agregado, modificado o eliminado archivos de palabra irrelevante en la instalación de SQL Server 2005 (9.x), la lista de palabras irrelevantes del sistema debe satisfacer sus necesidades.

  • Si los archivos de palabra irrelevante se modificaron en SQL Server 2005 (9.x), esas modificaciones se perderán durante la actualización. Para volver a crear las modificaciones, debe hacerlo de forma manual en la lista de palabras irrelevantes de correspondiente. Para obtener más información, consulte ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Si no desea aplicar palabras irrelevantes a los índices de texto completo (por ejemplo, si ha eliminado o borrado los archivos de palabra irrelevante en la instalación de SQL Server 2005 (9.x), debe desactivar la lista de palabras irrelevantes para cada índice de texto completo actualizado. Ejecute la siguiente instrucción Transact-SQL (reemplazando la base de datos por el nombre de la base de datos actualizada y la tabla por el nombre de la tabla):

    Use database;   
    ALTER FULLTEXT INDEX ON table  
       SET STOPLIST OFF;  
    GO  
    

    La cláusula STOPLIST OFF quita el filtrado de palabras irrelevantes y desencadena un rellenado de la tabla sin filtrar las palabras consideradas como irrelevantes.

Copia de seguridad y catálogos de texto completo importados

En los catálogos de texto completo que se vuelven a generar o que se restablecen durante la actualización (y para los nuevos catálogos de texto completo), el catálogo de texto completo es un concepto lógico y no reside en ningún grupo de archivos. Por consiguiente, para hacer una copia de seguridad de un catálogo de texto completo, debe identificar cada grupo de archivos que contenga un índice de texto completo del catálogo y hacer una copia de seguridad de cada uno de ellos, uno por uno. Para obtener más información, vea Realizar copias de seguridad de los catálogos de texto completo y restaurarlos.

En el caso de los catálogos de texto completo importados desde SQL Server 2005 (9.x), el catálogo de texto completo sigue siendo un archivo de base de datos en su propio grupo de archivos. El proceso de copia de seguridad de SQL Server 2005 (9.x) para catálogos de texto completo todavía se aplica, salvo que el servicio MSFTESQL no existe en SQL Server. Para obtener información sobre el proceso de SQL Server 2005 (9.x), consulte Copias de seguridad y restauración de catálogos de texto completo en libros digitales de SQL Server 2005.

Migración de índices de texto completo al actualizar una base de datos

Los archivos de base de datos y los catálogos de texto completo de una versión anterior de SQL Server se pueden actualizar a una instancia existente mediante el asistente para adjuntar, restaurar o copiar base de datos. Los índices de texto completo de SQL Server de 2005 (9.x), si los hay, se importan, restablecen o se vuelven a generar. La propiedad de servidor upgrade_option controla cuál de las opciones de actualización de texto completo usa la instancia del servidor durante estas actualizaciones de bases de datos.

Después de adjuntar, restaurar o copiar cualquier base de datos de SQL Server 2005 (9.x) en una instancia más reciente, la base de datos estará disponible inmediatamente y, a continuación, se actualizará automáticamente. Dependiendo de la cantidad de datos que se indicen, la importación puede requerir varias horas y volver a generar puede requerir hasta diez veces más. Tenga en cuenta también que si la opción de actualización se establece en importar y no hay disponible ningún catálogo de texto completo, se vuelven a generar los índices de texto completo asociados.

Para cambiar el comportamiento de la actualización de texto completo en una instancia del servidor

Consideraciones para restaurar un catálogo de texto completo de SQL Server 2005 (9.x)

Un método para actualizar datos de texto completo desde una base de datos de SQL Server 2005 (9.x) consiste en restaurar una copia de seguridad completa de la base de datos en una instancia más reciente de SQL Server.

Al importar un catálogo de texto completo de SQL Server 2005 (9.x), puede realizar copias de seguridad y restaurar la base de datos y el archivo de catálogo. El comportamiento es el mismo que en SQL Server 2005 (9.x):

  • La copia de seguridad completa de la base de datos incluirá el catálogo de texto completo. Para hacer referencia al catálogo de texto completo, use su nombre de archivo SQL Server 2005 (9.x), sysft_+catalog-name.

  • Si el catálogo de texto completo está sin conexión, se producirá un error en la copia de seguridad.

Para obtener más información sobre la copia de seguridad y restauración de catálogos de texto completo de SQL Server 2005 (9.x), vea Copias de seguridad y restauración de catálogos de texto completo y Copias de seguridad y restauración de archivos y catálogos de texto completo en libros digitales de SQL Server 2005 (9.x).

Cuando la base de datos se restaura en una instancia más reciente de SQL Server, se creará un nuevo archivo de base de datos para el catálogo de texto completo. El nombre predeterminado de este archivo es ftrow_catalog-name.ndf. Por ejemplo, si catalog-name es cat1, el nombre predeterminado del archivo de base de datos de SQL Server sería ftrow_cat1.ndf. Pero si el nombre predeterminado ya se usa en el directorio de destino, el nuevo archivo de base de datos se denominará ftrow_catalog-name{GUID}.ndf, donde GUID es el identificador único global del nuevo archivo.

Después de que se hayan importado los catálogos, los elementos sys.database_files y sys.master_filese actualizan para eliminar las entradas de catálogo, y la columna path de sys.fulltext_catalogs se establece en NULL.

Para realizar una copia de seguridad de una base de datos

Para restaurar una copia de seguridad de base de datos

Ejemplo

En el ejemplo siguiente se usa la cláusula MOVE en la instrucción RESTORE para restaurar una base de datos de SQL Server 2005 (9.x) denominada ftdb1. Los archivos de base de datos, registro y catálogo de SQL Server 2005 (9.x) se mueven a nuevas ubicaciones de la instancia del servidor SQL Server, como se indica a continuación:

  • El archivo de base de datos, ftdb1.mdf, se mueve a C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • El archivo de registro, ftdb1_log.ldf, se mueve a un directorio de registro de la unidad de disco de registro, log_drive:\log_directory\ftdb1_log.ldf.

  • Los archivos de catálogo que corresponden al catálogo de sysft_cat90 se mueven a C:\temp. Una vez importados los índices de texto completo, estos se sitúan automáticamente en un archivo de base de datos, C:\ftrow_sysft_cat90.ndf, y se eliminan de C:\temp.

RESTORE DATABASE [ftdb1] FROM  DISK = N'C:\temp\ftdb1.bak' WITH  FILE = 1,  
   MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',  
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',  
    MOVE N'sysft_cat90' TO N'C:\temp';  

Anexión de una base de datos de SQL Server 2005

En SQL Server 2008 (10.0.x) y versiones posteriores, un catálogo de texto completo es un concepto lógico que hace referencia a un grupo de índices de texto completo. Un catálogo de texto completo es un objeto virtual y no pertenece a ningún grupo de archivos. Sin embargo, al adjuntar una base de datos de SQL Server 2005 (9.x) que contiene archivos de catálogo de texto completo en una instancia de servidor de SQL Server más reciente, los archivos de catálogo se adjuntan desde su ubicación anterior junto con los demás archivos de base de datos, igual que en SQL Server 2005 (9.x).

El estado de cada catálogo de texto completo adjunto en SQL Server es el mismo que cuando la base de datos se desasoció de SQL Server 2005 (9.x). Si la operación de desasociación suspendió cualquier rellenado de índices de texto completo, el rellenado se reanuda en SQL Server y el índice de texto completo estará disponible para la búsqueda de texto completo.

Si SQL Server no encuentra un archivo de catálogo de texto completo o si el archivo de texto completo se movió durante la operación de asociación sin especificar una nueva ubicación, el comportamiento depende de la opción de actualización de texto completo seleccionada. Si la opción de actualización de texto completo es Importar o Volver a generar, se vuelve a generar el catálogo de texto completo adjunto. Si la opción de actualización de texto completo es Restablecer, se restablece el catálogo de texto completo adjunto.

Para obtener más información sobre cómo desasociar y adjuntar una base de datos, consulte Desasociación y asociación de bases de datos (SQL Server), CREATE DATABASE (SQL Server Transact-SQL), sp_attach_db y sp_detach_db (Transact-SQL).

Consulte también

Introducción a la búsqueda de texto completo
Configurar y administrar separadores de palabras y lematizadores para la búsqueda
Configurar y administrar filtros para búsquedas