Actualizar la búsqueda de texto completo desde SQL Server 2005

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

En este tema, se describen los siguientes aspectos de la actualización de la búsqueda de texto completo desde SQL Server 2005:

  • Actualizar una instancia del servidor

  • Opciones de actualización de texto completo

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

  • Migrar índices de texto completo al actualizar una base de datos a SQL Server 2012

  • Consideraciones sobre la restauración de un catálogo de texto completo de SQL Server 2005 en SQL Server 2012

  • Adjuntar una base de datos de SQL Server 2005 a SQL Server 2012

Actualizar una instancia del servidor

Si se trata de una actualización en contexto, se instalan en paralelo una instancia de SQL Server 2012 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.

  • 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 introdujo 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 configurar la cuenta de servicio, vea Establecer la cuenta del servicio para el selector del demonio de filtro completo.

En SQL Server 2005, 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 y versiones posteriores, un catálogo de texto completo es un concepto 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.

[!NOTA]

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

Opciones de actualización de texto completo

Durante la actualización de una instancia de servidor a SQL Server 2012, 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 divisores de palabras nuevos instalados con la última versión 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.

    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. 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.

  • Restablecer
    Los catálogos de texto completo se restablecen. Cuando se actualizan desde SQL Server 2005, los catálogos de texto completo 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.

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 2012 instala nuevos separadores de palabras para ser usados en 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 que el separador de palabras de una versión anterior de SQL Server separó de forma diferente que el separador de palabras actual, es posible que no se recupere un documento o una fila que contengan 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 (recompilar) 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 compilado í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 de SQL Server 2012, 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 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 de SQL Server 2005

Si un catálogo de texto completo se ha importado al actualizar una base de datos de SQL Server 2005 a SQL Server 2012, podrían producirse discrepancias entre la consulta y el contenido del índice de texto completo debido a las diferencias de comportamiento entre los nuevos separadores de palabras y los anteriores. 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 CATALOG catalog_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 acerca de 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

Las palabras irrelevantes de SQL Server 2005 se han reemplazado por palabras irrelevantes en SQL Server 2008 y versiones posteriores. Cuando una base de datos se actualiza a SQL Server 2012 a partir de SQL Server 2005, los archivos de palabras irrelevantes de esa versión dejan de usarse. 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 2012.

Después de la actualización a partir de SQL Server 2005:

  • 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 table):

    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.

Las copias de seguridad y los 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 en SQL Server 2012, 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.

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 2012. Para obtener información sobre el 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 2005.

Migrar índices de texto completo al actualizar una base de datos a SQL Server 2012

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 2012 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 recompilan. 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 a SQL Server 2012, queda disponible inmediatamente y se actualiza a continuación de forma automática. 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

Consideraciones sobre la restauración de un catálogo de texto completo de SQL Server 2005 a SQL Server 2012

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

Al importar un catálogo de texto completo de SQL Server 2005, 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 textoen los Libros en pantalla de SQL Server 2005.

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

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

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 2012 de la manera siguiente:

  • El archivo de base de datos, ftdb1.mdf, se mueve a C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL11.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, 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\MSSQL11.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';

Adjuntar una base de datos de SQL Server 2005 a SQL Server 2012

En SQL Server 2008 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 que contiene archivos de catálogo de texto completo a una instancia del servidor de SQL Server 2012, 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 2012 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 2012, por lo que será posible realizar búsquedas de texto completo en dicho índice de texto completo.

Si SQL Server 2012 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 Adjuntar y separar bases de datos (SQL Server), CREATE DATABASE (Transact-SQL), sp_attach_db y sp_detach_db (Transact-SQL).

Vea también

Conceptos

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