Actualización de la búsqueda de texto completo

La actualización de la búsqueda de texto completo a SQL Server 2008 se realiza durante la instalación y al adjuntar, restaurar o copiar archivos de base de datos y catálogos de texto completo de una versión anterior de SQL Server con el Asistente para copiar bases de datos.

En este tema, se describen los siguientes aspectos de la actualización de texto completo:

Si se trata de una actualización en contexto, se instalan en paralelo una instancia de SQL Server 2008 y la versión anterior de SQL Server, y se migran los datos. Si la versión anterior de SQL Server tenía instalada la función de búsqueda de texto completo, automáticamente se instala una nueva versión de dicha función. Para poder realizar la instalación en paralelo, es necesaria la presencia de los componentes siguientes en cada instancia de SQL Server.

Componente

Descripción

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 Separadores de palabras y lematizadores y Filtros de búsqueda de texto completo.

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 de terceros 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 de 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 Nota
SQL Server 2008 introduce una cuenta de servicio para el servicio del iniciador del FDHOST (MSSQLFDLauncher). Este servicio propaga la información de la cuenta de servicio a los procesos del host de demonio de filtro de una instancia concreta de SQL Server. Para obtener información sobre cómo instalar la cuenta de servicio, vea Cómo establecer la cuenta de servicio del iniciador de FDHOST (MSSQLFDLauncher) para la búsqueda de texto completo (Administrador de configuración de SQL Server).

En SQL Server 2005 y versiones anteriores, 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 es tratado como un archivo de base de datos. En SQL Server 2008, un catálogo de texto completo es un concepto lógico (un objeto virtual) que hace referencia a 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 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.

Para obtener más información acerca de la arquitectura de la búsqueda de texto completo en SQL Server 2008, vea Arquitectura de la búsqueda de texto.

Nota Nota

Las instrucciones de DDL Transact-SQL de SQL Server 2005 que especifican los catálogos de texto completo funcionan correctamente.

Durante la actualización de una instancia de servidor a SQL Server 2008, la interfaz de usuario le permite elegir una de las opciones de actualización de texto completo siguientes.

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 separadores de palabras nuevos y mejorados de SQL Server 2008, por lo que es posible que, al final, le interese volver a generar los catálogos de texto completo.

Nota Nota

La regeneració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 regeneración use todas ellas, 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.

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.

Volver a generar

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

Restablecer

Se restablecen los catálogos de texto completo. Los archivos de catálogo de texto completo de SQL Server 2005 se quitan, pero los metadatos de los catálogos de texto completo y los índices de texto completo se conservan. 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 seguirá estando vacío hasta que se emita manualmente un rellenado completo, después de que se complete la actualización.

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

  • ¿Cómo usa los separadores de palabras?

    El servicio de búsqueda de texto completo de SQL Server 2008 incluye nuevos separadores de palabras y lematizadores. Éstos podrían cambiar los resultados de las consultas de texto completo llevadas a cabo en versiones anteriores para un determinado patrón de texto o escenario. Por tanto, a la hora de elegir una opción de actualización adecuada, es importante que tenga en cuenta el uso que va a dar a los separadores de palabras:

    • Si los separadores de palabras del idioma de texto completo que usa no han cambiado en SQL Server 2008 o, si la precisión de la recuperación no le parece importante, la importación es una opción adecuada. Más adelante, si experimenta problemas de recuperación y desea actualizar a los nuevos separadores de palabras, solo tendrá que volver a generar los catálogos de texto completo. Para obtener más información, vea "Usar los nuevos separadores de palabras después de importar un índice de texto completo de SQL Server 2005" más adelante en esta sección.

    • Si le preocupa la precisión de la recuperación y usa uno de los separadores de palabras que se han mejorado en SQL Server 2008, la regeneración es la opción adecuada.

  • ¿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 generar, 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 Nota

    Para los índices de texto completo de SQL Server 2008, recomendamos que el tipo de datos de la columna que actúa como clave de texto completo sea Integer. Para obtener más información, vea Ajuste y optimización del 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.

Cuando se importa un índice de texto completo de SQL Server 2005, es importante tener en cuenta que SQL Server 2008 incluye nuevos separadores de palabras para muchos de los idiomas de SQL Server 2005. Solo los separadores de palabras para inglés, coreano, tailandés y chino (tradicional y simplificado) siguen siendo los mismos. Para otros idiomas, SQL Server 2008 introduce una nueva generación de separadores de palabras que, potencialmente, podrían comportarse de forma algo diferente a como lo hacen los separadores de palabras de SQL Server 2005 en los índices de texto completo de SQL Server 2005 importados.

Si, al actualizar una base de datos de SQL Server 2005 a SQL Server 2008, se importó un catálogo de texto completo, uno o varios de los idiomas usados por los índices de texto completo de dicho catálogo podrían estar ahora asociados a nuevos separadores de palabras. En esos idiomas, si una consulta usa los nuevos separadores de palabras, podrían producirse discrepancias ocasionales entre la consulta y el contenido del índice de texto completo debido a las pequeñas diferencias de comportamiento entre los nuevos separadores de palabras y los antiguos. En este caso, para garantizar una coincidencia total entre las consultas y el contenido del índice de texto completo, lleve a cabo una de las acciones siguientes:

  • Vuelva a generar 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).

Nota importante Importante

Si los catálogos de texto completo y los índices usan separadores de palabras sin modificar, como los separadores de palabras ingleses, por ejemplo, no habrá ninguna discrepancia. Los separadores de palabras usados durante las consultas serán los mismos que se usaron cuando se creó el índice, tanto durante la indización como en las futuras consultas.

Para obtener información acerca de los separadores de palabras, vea Separadores de palabras y lematizadores.

El concepto de palabras irrelevantes de SQL Server 2005 sigue vigente en SQL Server 2008. Cuando una base de datos se actualiza a SQL Server 2008 a partir de una versión anterior, los archivos de palabras irrelevantes dejan de usarse en SQL Server 2008. Sin embargo, los archivos de palabras irrelevantes antiguos se almacenan en la carpeta FTDATA\ FTNoiseThesaurusBak para que los pueda usar posteriormente cuando actualice o genere las correspondientes listas de palabras irrelevantes de SQL Server 2008.

Después de la actualización:

  • Si nunca agregó, modificó ni eliminó archivos de palabras irrelevantes de la instalación de SQL Server 2005, la lista de palabras irrelevantes del sistema será suficiente para cubrir sus necesidades.

  • Si modificó los archivos de palabras irrelevantes en SQL Server 2005, las 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 SQL Server 2008 correspondiente. Para obtener más información, vea ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Si no desea aplicar palabras irrelevantes a sus índices de texto completo (por ejemplo, si eliminó o borró los archivos de palabras irrelevantes de la instalación de SQL Server 2005), debe desactivar la lista de palabras irrelevantes para todos los índices de texto completo actualizados. Ejecute la siguiente instrucción Transact-SQL (reemplace database por el nombre de la base de datos actualizada y table 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.

Para 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 un grupo de archivos. Por consiguiente, para hacer una copia de seguridad de un catálogo de texto completo en SQL Server 2008, es necesario identificar cada grupo de archivos que contenga un índice de texto completo del catálogo y hacer una copia de seguridad de los mismos, uno por uno. Para obtener más información, vea Hacer copia de seguridad y restaurar un catálogo de texto completo de SQL Server 2008.

Para los catálogos de texto completo importados de SQL Server 2005, el catálogo de texto completo sigue siendo un archivo de base de datos en su propio grupo de archivos. Se sigue aplicando el proceso de copia de seguridad de SQL Server 2005 para los catálogos de texto completo, con la salvedad de que el servicio MSFTESQL no existe en SQL Server 2008. Para obtener información acerca del proceso de SQL Server 2005, vea Realizar copias de seguridad y restaurar catálogos de texto completo en los Libros en pantalla de SQL Server.

Nota Nota

Para obtener más información acerca de las copias de seguridad y restauración de bases de datos de SQL Server 2008, vea Hacer copia de seguridad y restaurar un catálogo de texto completo de SQL Server 2008.

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 del servidor de SQL Server 2008 existente mediante operaciones de anexión o restauración, o con el Asistente para copiar bases de datos. Los índices de texto completo de SQL Server 2005, si los hubiera, se importan, se restablecen o se vuelven a generar. Los índices de texto completo de SQL Server 2000, si los hubiera, se vuelven a generar o se restablecen. La propiedad de servidor upgrade_option controla cuál de las opciones de actualización de texto completo usa la instancia del servidor durante la actualización de estas bases de datos.

Después de adjuntar, restaurar o copiar una base de datos de SQL Server 2005 o SQL Server 2000 en SQL Server 2008, ésta pasa a estar disponible de manera inmediata; a continuación, se actualiza automáticamente. Dependiendo de la cantidad de datos que se indicen, el proceso de importación puede llevar varias horas, mientras que el de regeneración puede llevar 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

Una forma de actualizar los datos de texto completo de una base de datos de SQL Server 2005 a SQL Server 2008 consiste en restaurar una copia de seguridad completa de la base de datos en SQL Server 2008.

Mientras importa un catálogo, puede hacer una copia de seguridad y restaurar la base de datos y el archivo de catálogo. El comportamiento es el mismo que en SQL Server 2005.

  • 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 en SQL Server 2005, 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 acerca de las copias de seguridad y la restauración de catálogos de texto completo de SQL Server 2005, vea Realizar copias de seguridad y restaurar catálogos de texto y Realizar copia de seguridad y restaurar archivos y catálogos de texto en los Libros en pantalla de SQL Server 2005.

Cuando la base de datos se restaura en SQL Server 2008, se crea 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 2008 será 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.

Una vez importados los catálogos, se actualizan sys.database_files y sys.master_files para quitar 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

Nota Nota

Para obtener información acerca de la restauración de índices de texto completo de SQL Server 2008, vea Restauración por etapas e índices de texto completo.

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 denominada ftdb1. La base de datos, el registro y los archivos de catálogo de SQL Server 2005 se mueven a las nuevas ubicaciones de la instancia del servidor de SQL Server 2008 de la manera siguiente:

  • El archivo de base de datos, ftdb1.mdf, se mueve a C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL10.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 sysft_cat90 se mueven a C:\temp. Una vez importados los índices de texto completo, éstos 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\MSSQL10.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';

En SQL Server 2008, 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 que contiene archivos de catálogo de texto completo a una instancia del servidor de SQL Server 2008, 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.

El estado de cada catálogo de texto completo adjunto de SQL Server 2008 es el mismo que el que tenía la base de datos cuando se separó de SQL Server 2005. Si, durante la operación de separación, se suspendió cualquier tarea de rellenado de un índice de texto completo, ésta se reanudará en SQL Server 2008, por lo que será posible realizar búsquedas de texto completo en dicho índice de texto completo.

Si SQL Server 2008 no puede localizar un archivo de catálogo de texto completo o si el archivo de texto completo se mueve durante la operación de separación sin especificar una nueva ubicación, el comportamiento dependerá 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 separar y adjuntar una base de datos, vea Separar y adjuntar bases de datos, CREATE DATABASE (Transact-SQL), sp_attach_db y sp_detach_db (Transact-SQL).

Adiciones de comunidad

AGREGAR
Mostrar: