Partilhar via


Atualização da pesquisa de texto completo

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

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

  • Atualizando uma instância de servidor

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

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

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

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

  • Anexando um banco de dados do SQL Server 2005 ao SQL Server 2008

Atualizando uma instância de servidor

Em uma atualização no local, uma instância do SQL Server 2008 é configurada lado a lado com a versão antiga do SQL Server, e os dados são migrados. Se a pesquisa de texto completo estava instalada na versão antiga do SQL Server, uma versão nova da pesquisa de texto completo será instalada automaticamente. A instalação lado a lado significa que cada um dos componentes a seguir existe na instância do SQL Server.

Componente

Descrição

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 Separadores de palavras e lematizadores e Filtros da pesquisa de texto completo.

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 extensíveis de terceiros utilizados para índice e pesquisa, 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 de thread único para todos os filtros de thread único.

ObservaçãoObservação
O SQL Server 2008 introduz uma conta de serviço para o serviço Iniciador FDHOST (MSSQLFDLauncher). Esse serviço propaga as informações da conta de serviço para os processos de host do daemon de filtro de uma dada instância do SQL Server. Para obter informações sobre como configurar a conta de serviço, consulte Como definir a conta de serviço do Iniciador FDHOST (MSSQLFDLauncher) para pesquisa de texto completo (SQL Server Configuration Manager).

No SQL Server 2005 e em versões anteriores, 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, um catálogo de texto completo é um conceito lógico — um objeto virtual — que se refere a um grupo de índices de texto completo. Por isso, um novo catálogo de texto completo não é tratado como 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.

Para obter mais informações sobre a arquitetura da pesquisa de texto completo no SQL Server 2008, consulte Arquitetura da pesquisa de texto completo.

ObservaçãoObservação

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

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

Na atualização de uma instância de servidor para o SQL Server 2008, a interface do usuário permite escolher uma das opções de atualização de texto completo a seguir.

  • 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. Contudo, um catálogo de texto completo importado não usa os separadores de palavras novos e aprimorados introduzidos no SQL Server 2008, por isso pode ser necessário recompilar o catálogo de texto completo no futuro.

    ObservaçãoObservaçã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ê autorizar o uso de todas as CPUs.

    Se um catálogo de texto completo não estiver disponível, os índices de texto completo associados serão recompilados. Esta opção só está disponível para bancos de dados do 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. Os arquivos de catálogo de texto completo do SQL Server 2005 são removidos, mas os metadados dos catálogos e dos índices de texto completo são preservados. 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:

  • Como você usa os separadores de palavras?

    O serviço de pesquisa de texto completo do SQL Server 2008 inclui novos separadores de palavras e lematizadores. Eles podem alterar os resultados de consultas de texto completo de versões anteriores quando é usado um determinado cenário ou padrão de texto. Portanto, a maneira como você usa os separadores de palavras é importante na hora de escolher uma opção de atualização apropriada:

    • Se os separadores de palavras do idioma de texto completo que você usa não foram mudados no SQL Server 2008 ou se a precisão dos dados recuperados não é um fator crucial, a importação é a opção adequada. Posteriormente, se você tiver algum problema em relação a recuperação, poderá atualizar para os novos separadores de palavras recompilando os catálogos de texto completo. Para obter mais informações, consulte “Separadores de palavras e índices de texto completo importados”, mais adiante nesta seção.

    • Se a precisão dos dados recuperados é um aspecto importante e você usa um os separadores de palavras que foram aprimorados no SQL Server 2008, a recompilação é a escolha adequada.

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

    ObservaçãoObservação

    Para os índices de texto completo do SQL Server 2008, é recomendável que a coluna que funciona como a chave de texto completo tenha um tipo de dados integer. Para obter mais informações, consulte Ajuste de desempenho e otimização 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.

Usando os novos separadores de palavras depois de importar um índice de texto completo do SQL Server 2005

Ao importar um índice de texto completo do SQL Server 2005, é importante observar que o SQL Server 2008 inclui novos separadores de palavras para muitos dos idiomas existentes no SQL Server 2005. Somente os separadores de palavras para inglês, coreano, tailandês e chinês (todas as formas) permanecem os mesmos. Nos demais idiomas, o SQL Server 2008 introduz uma nova geração de separadores de palavras, que podem se comportar ligeiramente diferente dos separadores de palavras do SQL Server 2005 em índices de texto completo do SQL Server 2005 importados.

Se um catálogo de texto completo foi importado durante a atualização de um banco de dados do SQL Server 2005 para o SQL Server 2008, é possível que agora um ou mais idiomas usados pelos índices de texto completo do catálogo de texto completo estejam associados a novos separadores de palavras. Nesses idiomas, quando uma consulta usa os novos separadores de palavras, às vezes podem ocorrer incompatibilidades entre a consulta e o conteúdo do índice de texto completo devido a pequenas diferenças no comportamento dos antigos e dos novos separadores de palavras. Nesse caso, para garantir uma total compatibilidade entre as consultas e o conteúdo do índice de texto completo, é necessário:

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

Observação importanteImportante

Se os seus catálogos e índices de texto completo estiverem usando separadores de palavras inalterados, como os do inglês, por exemplo, não haverá incompatibilidades. Os separadores de palavras utilizados nas consultas serão aqueles usados quando o índice foi criado na indexação e em futuras consultas.

Para obter informações sobre separadores de palavras, consulte Separadores de palavras e lematizadores.

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

As palavras de ruído do SQL Server 2005 foram substituídas por palavras irrelevantes (stoplist) do SQL Server 2008. Quando um banco de dados é atualizado para o SQL Server 2008 de uma versão anterior, os arquivos de palavras de ruído não são mais usados no SQL Server 2008. No entanto, os antigos arquivos de palavras de ruído ficam armazenados na pasta FTDATA\ FTNoiseThesaurusBak, e você poderá usá-los posteriormente quando atualizar ou criar as listas de palavras irrelevantes do SQL Server 2008

Depois da atualização:

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

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

  • Caso você não deseje aplicar palavras irrelevantes aos índices de texto completo (por exemplo, se você excluiu ou apagou os arquivos de palavras de ruído da instalação do SQL Server 2005), desative a lista de palavras irrelevantes de cada índice de texto completo atualizado. Execute a seguinte instrução Transact-SQL (substituindo database pelo nome do banco de dados atualizado e table 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 aciona uma população da tabela, sem filtrar nenhuma das palavras consideradas irrelevantes.

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 2008, é necessário identificar cada grupo de arquivos que contém um índice de texto completo do catálogo e fazer backup de cada um deles. Para obter mais informações, consulte Fazendo backup e restauração de um catálogo de texto completo do SQL Server 2008.

Nos catálogos de texto completo 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 do SQL Server 2005 para catálogos de texto completo ainda é aplicável, com a exceção de que o serviço MSFTESQL não existe no SQL Server 2008. Para obter informações sobre o processo do SQL Server 2005, consulte Backup e restauração de catálogos de texto completo nos Manuais Online do SQL Server 2005.

ObservaçãoObservação

Para obter informações sobre backup e restauração de um banco de dados do SQL Server 2008, consulte Fazendo backup e restauração de um catálogo de texto completo do SQL Server 2008.

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

Os arquivos de banco de dados e os catálogos de texto completo de uma versão anterior do SQL Server podem ser atualizados para uma instância de servidor do SQL Server 2008 existente usando procedimentos de anexação, restauração ou o Assistente para Copiar Banco de Dados. Os índices de texto completo do SQL Server 2005, se houver, serão importados, redefinidos ou recriados. Os índices de texto completo do SQL Server 2000, se houver, serão recriados ou redefinidos. A propriedade de servidor upgrade_option controla que opção de atualização de texto completo é usada pela instância de servidor durante essas atualizações de banco de dados.

Depois que você anexa, restaura ou copia qualquer banco de dados do SQL Server 2005 ou do SQL Server 2000 no SQL Server 2008, ele fica disponível de imediato e, em seguida, é atualizado automaticamente. Dependendo da quantidade de dados a serem indexados, a importação pode levar várias horas, e a recompilação pode ser até dez vezes mais demorada. Observe também que, quando a opção de atualização estiver definida para 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 2008

Um método de atualização dos dados de texto completo de um banco de dados do SQL Server 2005 para o SQL Server 2008 consiste em restaurar um backup completo do banco de dados para o SQL Server 2008.

Durante a importação de um catálogo, é possível fazer backup e restaurar o banco de dados e o arquivo de catálogo. O comportamento é o mesmo no SQL Server 2005.

  • O backup completo do banco de dados incluirá o catálogo de texto completo. Para consultar o catálogo de texto completo, use o nome de arquivo do 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 o backup e a restauração de catálogos de texto completo do SQL Server 2005, consulte Backup e restauração de catálogos de texto completo e Backup e restauração de arquivos e catálogos de texto completo nos Manuais Online do SQL Server 2005.

Quando o banco de dados for restaurado no SQL Server 2008, 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 do SQL Server 2008 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, onde GUID é o Identificador Global Exclusivo do novo arquivo.

Após a importação dos catálogos, as exibições do catálogo sys.database_files e sys.master_files são atualizadas para remover entradas de catálogo, e a coluna path de sys.fulltext_catalogs é definida como NULL.

Para fazer backup de um banco de dados

Para restaurar um backup de banco de dados

ObservaçãoObservação

Para obter informações sobre como restaurar índices de texto completo do SQL Server 2008, consulte Restauração por etapas e índices de texto completo.

Exemplo

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

  • O arquivo de banco de dados, ftdb1.mdf, é movido para C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL10.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, unidade_de_log:\diretório_de_log\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\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';

Anexando um banco de dados do SQL Server 2005 ao SQL Server 2008

No SQL Server 2008, 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 do SQL Server 2005 que contém arquivos de catálogo de texto completo a uma instância de servidor do SQL Server 2008, os arquivos de catálogo são anexados de seus locais anteriores junto com os outros arquivos de banco de dados, assim como ocorre no SQL Server 2005.

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

Se o SQL Server 2008 não encontrar um arquivo de catálogo de texto completo ou se o arquivo de texto completo foi movido durante a operação de anexação sem que fosse especificado 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 Desanexando e anexando bancos de dados, CREATE DATABASE (Transact-SQL), sp_attach_db e sp_detach_db (Transact-SQL).