Atualizar pesquisa de texto completo

A atualização da pesquisa de texto completo para SQL Server 2014 é feita durante a instalação e quando arquivos de banco de dados e catálogos de texto completo da versão anterior do SQL Server são anexados, restaurados ou copiados usando o Assistente para Cópia de Banco de Dados.

Este tópico aborda os seguintes aspectos da atualização de pesquisa de texto completo:

Atualizando uma instância de servidor

Para uma atualização in-loco, uma instância do SQL Server 2014 é configurada lado a lado com a versão antiga do SQL Server e os dados são migrados. Se a versão antiga do SQL Server tiver uma pesquisa de texto completo instalada, uma nova versão da pesquisa de texto completo será instalada automaticamente. A instalação lado a lado significa que cada um dos componentes a seguir existe no nível da instância do SQL Server.

Separadores de palavras, lematizadores e filtros
Agora cada instância usa seu próprio conjunto de separadores de palavras, lematizadores e filtros, em vez de utilizar a versão do sistema operacional desses componentes. Esses componentes também são mais fáceis de registrar e configurar por instância. Para obter mais informações, consulte Configurar e gerenciar separadores de palavras e lematizadores de pesquisa e Configurar e gerenciar filtros para pesquisa.

Host do daemon de filtro
Os hosts do daemon de filtro de texto completo são processos que carregam e orientam com segurança os componentes externos extensíveis usados para índice e consulta, como separadores de palavras, lematizadores e filtros, sem comprometer a integridade do Mecanismo de Texto Completo. Uma instância de servidor usa um processo multi-threaded para todos os filtros multi-threaded e um processo single-threaded para todos os filtros single-threaded.

Observação

SQL Server 2008 introduziu uma conta de serviço para o serviço FDHOST Launcher (MSSQLFDLauncher). Esse serviço propaga as informações da conta de serviço para os processos de host daemon de filtro de uma instância específica do SQL Server. Para obter informações sobre como configurar a conta de serviço, consulte Definir a conta de serviço do Iniciador do Daemon de Filtro de Texto Completo.

No SQL Server 2005, cada índice de texto completo reside em um catálogo de texto completo que pertence a um grupo de arquivos, tem um caminho físico e é tratado como um arquivo de banco de dados. No SQL Server 2008 e versões posteriores, um catálogo de texto completo é um objeto lógico ou virtual que contém um grupo de índices de texto completo. Por isso, um novo catálogo de texto completo não é tratado como um arquivo de banco de dados com um caminho físico. No entanto, durante a atualização de qualquer catálogo de texto completo que contém arquivos de dados, é criado um novo grupo de arquivos no mesmo disco. Isso mantém o antigo comportamento de E/S do disco após a atualização. Qualquer índice de texto completo desse catálogo será colocado no novo grupo de arquivos se existir o caminho raiz. Se o caminho do antigo catálogo de texto completo for inválido, a atualização manterá o índice de texto completo no mesmo grupo de arquivos que a tabela base ou, no caso de uma tabela particionada, no grupo de arquivos primário.

Observação

SQL Server instruções DDL Transact-SQL 2005 que especificam catálogos de texto completo continuam funcionando corretamente.

Opções de atualização de texto completo

Ao atualizar uma instância de servidor para SQL Server 2014, a interface do usuário permite que você escolha uma das seguintes opções de atualização de texto completo.

Importar
Os catálogos de texto completo são importados. A importação costuma ser consideravelmente mais rápida do que a recompilação. Por exemplo, quando é usada apenas uma CPU, a importação é executada cerca de 10 vezes mais rápido do que a recompilação. No entanto, um catálogo de texto completo importado não usa os novos separadores de palavras instalados com a versão mais recente do SQL Server. Para garantir a consistência nos resultados da consulta, os catálogos de texto completo precisam ser recompilados.

Observação

A recompilação pode ser executada no modo multi-threaded e, se houver mais de 10 CPUs disponíveis, ela poderá ser executada mais rápido do que a importação se você permitir que a recompilação use todas as CPUs.

Se um catálogo de texto completo não estiver disponível, os índices de texto completo associados serão recompilados. Essa opção está disponível apenas para bancos de dados SQL Server 2005.

Para obter informações sobre o impacto da importação do índice de texto completo, consulte "Considerações sobre como escolher uma opção de atualização de texto completo", mais adiante neste tópico.

Recompilar
Os catálogos de texto completo são recompilados usando-se os separadores de palavras novos e aprimorados. A recompilação de índices pode demorar um pouco, e uma quantidade significativa de memória e CPU pode ser necessária após a atualização.

Redefinir
Os catálogos de texto completo são redefinidos. Ao atualizar do SQL Server 2005, os arquivos de catálogo de texto completo são removidos, mas os metadados para catálogos de texto completo e índices de texto completo são mantidos. Depois de serem atualizados, todos os índices de texto completo são desabilitados para o controle de alteração e os rastreamentos não são iniciados automaticamente. O catálogo permanecerá vazio até você executar uma população completa manualmente, depois que a atualização for concluída.

Considerações sobre como escolher uma opção de atualização de texto completo

Ao escolher a opção de atualização para sua atualização, considere o seguinte:

  • Você precisa de consistência nos resultados da consulta?

    SQL Server 2014 instala novos separadores de palavras para uso por Full-Text e Pesquisa Semântica. Os separadores de palavras são usados na indexação e na consulta. Se você não recriar os catálogos de texto completo, seus resultados da pesquisa poderão ser inconsistentes. Se você emitir uma consulta de texto completo que procura uma frase que é quebrada de forma diferente pelo separador de palavras em uma versão anterior do SQL Server e o separador de palavras atual, um documento ou linha que contém a frase pode não ser recuperado. Isso ocorre porque as frases indexadas foram quebradas usando uma lógica diferente da usada pela consulta. A solução é preencher novamente (recompilar) os catálogos de texto completo com os novos separadores de palavras de forma que os comportamentos de tempo de indexação e de consulta sejam idênticos. Você pode escolher a opção Recriar para fazer isso ou executar a recompilação manualmente após escolher a opção Importar.

  • Algum índice de texto completo foi compilado em colunas de chave de texto completo integer?

    A recompilação faz otimizações internas que, em alguns casos, melhoram o desempenho de consultas do índice de texto completo atualizado. Especificamente, se você tiver catálogos de texto completo que contêm índices de texto completo para os quais a coluna de chave de texto completo da tabela base é do tipo de dados integer, a recompilação atingirá o desempenho ideal de consultas de texto completo depois da atualização. Nesse caso, é altamente recomendável usar a opção Recriar .

    Observação

    Para índices de texto completo no SQL Server 2014, recomendamos que a coluna que serve como chave de texto completo seja um tipo de dados inteiro. Para obter mais informações, consulte Melhorar o desempenho de índices de texto completo.

  • Qual é a prioridade para colocar a instância de servidor online?

    A importação ou a recompilação durante a atualização usa muitos recursos da CPU, o que faz com que o restante da instância do servidor demore para ser atualizado e ficar online. Se colocar a instância do servidor online o mais rápido possível é importante para você e se você deseja executar uma população manual depois da atualização, a opção Redefinir é a mais adequada.

Assegurando resultados de consulta consistentes após a importação de um índice de texto completo do SQL Server 2005

Se um catálogo de texto completo tiver sido importado ao atualizar um banco de dados SQL Server 2005 para SQL Server 2014, as incompatibilidades entre a consulta e o conteúdo do índice de texto completo poderão ocorrer devido a diferenças no comportamento dos separadores de palavras antigos e novos. Nesse caso, para garantir compatibilidade total entre as consultas e o conteúdo do índice de texto completo, escolha uma das opções a seguir:

  • Recompilar o catálogo de texto completo que contém o índice de texto completo (ALTER FULLTEXT CATALOGcatalog_name REBUILD)

  • Emitir FULL POPULATION no índice de texto completo (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION).

Para obter mais informações sobre separadores de palavras, consulte Configurar e gerenciar separadores de palavras e lematizadores para pesquisa.

Atualizando arquivos de palavras de ruído para listas de palavras irrelevantes (stoplists)

SQL Server palavras de ruído de 2005 foram substituídas por palavras irrelevantes no SQL Server 2008 e versões posteriores. Quando um banco de dados é atualizado para SQL Server 2014 de SQL Server 2005, os arquivos de palavra de ruído não são mais usados. No entanto, os arquivos antigos de palavras de ruído são armazenados na pasta FTDATA\ FTNoiseThesaurusBak e você pode usá-los posteriormente ao atualizar ou criar as listas de palavras irrelevantes correspondentes SQL Server 2014.

Após a atualização do SQL Server 2005:

  • Se você nunca adicionou, modificou ou excluiu arquivos de palavras de ruído na instalação do SQL Server 2005, a lista de palavras irrelevantes do sistema deve atender às suas necessidades.

  • Se os arquivos de palavras de ruído tiverem sido modificados no SQL Server 2005, essas modificações serão perdidas durante a atualização. Para recriar essas atualizações, você deve recriar manualmente essas modificações na lista de palavras irrelevantes correspondentes SQL Server 2008. Para obter mais informações, consulte ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Se você não quiser aplicar palavras irrelevantes aos índices de texto completo (por exemplo, se você excluiu ou apagou seus arquivos de palavras de ruído na instalação do SQL Server 2005), desative a lista de palavras irrelevantes para cada índice de texto completo atualizado. Execute a seguinte instrução Transact-SQL (substituindo o banco de dados pelo nome do banco de dados atualizado e da tabela pelo nome da tabela):

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

    A cláusula STOPLIST OFF remove a filtragem de palavras irrelevantes e disparará a população da tabela, sem filtrar nenhuma das palavras consideradas palavras de ruído.

Backup e catálogos de texto completo importados

Nos catálogos de texto completo que são recompilados ou redefinidos durante a atualização (e nos novos catálogos de texto completo), o catálogo de texto completo é um conceito lógico e não reside em um grupo de arquivos. Portanto, para fazer backup de um catálogo de texto completo no SQL Server 2014, você deve identificar todos os grupos de arquivos que contêm um índice de texto completo do catálogo e fazer backup de cada um deles, um por um. Para obter mais informações, consulte Fazer backup e restaurar índices e catálogos de texto completo.

Para catálogos de texto completo que foram importados do SQL Server 2005, o catálogo de texto completo ainda é um arquivo de banco de dados em seu próprio grupo de arquivos. O processo de backup SQL Server 2005 para catálogos de texto completo ainda se aplica, exceto que o serviço MSFTESQL não existe no SQL Server 2014. Para obter informações sobre o processo do SQL Server 2005, consulte Backup e restauração de catálogos de Full-Text nos Manuais Online do SQL Server 2005.

Migrando índices de texto completo ao atualizar de um banco de dados para o SQL Server 2014

Arquivos de banco de dados e catálogos de texto completo de uma versão anterior do SQL Server podem ser atualizados para uma instância de servidor existente SQL Server 2014 usando anexar, restaurar ou o Assistente para Copiar Banco de Dados. SQL Server índices de texto completo de 2005, se houver, são importados, redefinidos ou recriados. A propriedade de servidor upgrade_option controla qual opção de atualização de texto completo é usada pela instância de servidor durante essas atualizações de banco de dados.

Depois de anexar, restaurar ou copiar qualquer banco de dados SQL Server 2005 para SQL Server 2014, o banco de dados fica disponível imediatamente e, em seguida, é atualizado automaticamente. Dependendo da quantidade de dados a serem indexados, a importação pode levar várias horas, e a recriação pode ser até dez vezes mais demorada. Lembre-se também de que, quando a opção de atualização estiver definida como Importar, se não houver um catálogo de texto completo disponível, os índices de texto completo associados serão recompilados.

Para alterar o comportamento de atualização de texto completo em uma instância de servidor

Considerações sobre como restaurar um catálogo de texto completo do SQL Server 2005 para o SQL Server 2014

Um método de atualização de dados de texto completo de um banco de dados SQL Server 2005 para o SQL Server 2014 é restaurar um backup de banco de dados completo para SQL Server 2014.

Ao importar um catálogo de texto completo SQL Server 2005, você pode fazer backup e restaurar o banco de dados e o arquivo de catálogo. O comportamento é o mesmo de SQL Server 2005:

  • O backup completo do banco de dados incluirá o catálogo de texto completo. Para fazer referência ao catálogo de texto completo, use seu nome de arquivo SQL Server 2005, sysft_+catalog-name.

  • Se o catálogo de texto completo estiver offline, ocorrerá falha no backup.

Para obter mais informações sobre como fazer backup e restaurar catálogos de texto completo SQL Server 2005, consulte Backup e restauração de catálogos de Full-Text e backup e restauração de arquivos e catálogos de Full-Text nos livrosonline do SQL Server 2005.

Quando o banco de dados for restaurado no SQL Server 2014, um novo arquivo de banco de dados será criado para o catálogo de texto completo. O nome padrão desse arquivo é ftrow_catalog-name.ndf. Por exemplo, se o nome do catálogo for cat1, o nome padrão do arquivo de banco de dados SQL Server 2014 será ftrow_cat1.ndf. Porém, se o nome padrão já estiver sendo usado no diretório de destino, o novo arquivo de banco de dados será chamado ftrow_catalog-name{GUID}.ndf, em que GUID é o Identificador Global Exclusivo do novo arquivo.

Depois que os catálogos foram importados, o sys.database_files e sys.master_files são atualizadas para remover as entradas do catálogo e a coluna path em sys.fulltext_catalogs é definida como NULL.

Para fazer o backup de um banco de dados

Para restaurar um backup de banco de dados

Exemplo

O exemplo a seguir usa a cláusula MOVE na instrução RESTORE para restaurar um banco de dados SQL Server 2005 chamado ftdb1. Os arquivos de banco de dados, log e catálogo do SQL Server 2005 são movidos para novos locais na instância do servidor SQL Server 2014, da seguinte maneira:

  • O arquivo de banco de dados, ftdb1.mdf, é movido para C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • O arquivo de log, ftdb1_log.ldf, é movido para um diretório de log da unidade do disco de log, log_drive:\log_directory\ftdb1_log.ldf.

  • Os arquivos de catálogo que correspondem ao catálogo sysft_cat90 são movidos para C:\temp. Depois de importados, os índices de texto completo são colocados automaticamente em um arquivo de banco de dados (C:\ftrow_sysft_cat90.ndf), e o diretório C:\temp é excluído.

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';  

Anexando um banco de dados SQL Server 2005 a SQL Server 2014

No SQL Server 2008 e versões posteriores, um catálogo de texto completo é um conceito lógico que se refere a um grupo de índices de texto completo. O catálogo de texto completo é um objeto virtual que não pertence a nenhum grupo de arquivos. No entanto, quando você anexa um banco de dados SQL Server 2005 que contém arquivos de catálogo de texto completo em uma instância de servidor SQL Server 2014, os arquivos de catálogo são anexados de seu local anterior junto com os outros arquivos de banco de dados, o mesmo que em SQL Server 2005.

O estado de cada catálogo de texto completo anexado no SQL Server 2014 é o mesmo de quando o banco de dados foi desanexado do SQL Server 2005. Se qualquer população de índice de texto completo tiver sido suspensa pela operação de desanexação, a população será retomada no SQL Server 2014 e o índice de texto completo ficará disponível para pesquisa de texto completo.

Se SQL Server 2014 não conseguir encontrar um arquivo de catálogo de texto completo ou se o arquivo de texto completo tiver sido movido durante a operação de anexação sem especificar um novo local, o comportamento dependerá da opção de atualização de texto completo selecionada. Se a opção de atualização de texto completo for Importar ou Recriar, o catálogo de texto completo anexado será recriado. Se a opção de atualização de texto completo for Redefinir, o catálogo de texto completo anexado será redefinido.

Para obter mais informações sobre como desanexar e anexar um banco de dados, consulte Desanexar e anexar banco de dados (SQL Server),CREATE DATABASE (SQL Server Transact-SQL),sp_attach_db e sp_detach_db (Transact-SQL).

Consulte Também

Iniciar a pesquisa de texto completo
Configurar e gerenciar separadores de palavras e lematizadores de pesquisa
Configurar e gerenciar filtros de pesquisa