Nosso site possui um banco de dados do SQL Server 2008 R2 Express Edition com indexação de texto completo para a pesquisa no site. Sempre que um novo registro é adicionado ou atualizado em uma das tabelas indexadas, o processo de indexação nunca parece ser concluído.
Eu tenho monitorado o status nas últimas semanas usando basicamente a mesma consulta encontrada neste site: http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-search/2155/Why-is-this -população-demorando tanto
É isso que vejo quando executo a consulta (clique para ver o tamanho completo):
Os registros mais recentes nas tabelas indexadas nunca são concluídos e não são pesquisáveis. Mesmo que não haja muitos dados nas tabelas, esperei dias para ver se a indexação é concluída, mas nada muda.
A única maneira de conseguir concluir a indexação com êxito é recriar o catálogo ou descartar e recriar todos os índices.
Toda vez que faço isso, o mesmo problema acaba voltando assim que o primeiro novo registro é adicionado.
Aqui estão as estatísticas do servidor por precaução:
- AMD Opteron de núcleo quádruplo 2.34GHz
- 4GB RAM
- Windows Server 2008 R2 Enterprise SP1 x64
- SQL Server 2008 R2 Express Edition com Serviços Avançados x64
Aqui está um script que eu criei usando cursores para reconstruir e preencher índices completos para qualquer tabela que tenha um para MSSQL2008. Isso está funcionando em um ambiente de produção com bancos de dados migrados de um servidor MSSQL 2000. Desativei o rastreamento de alterações e apenas execute este procedimento armazenado via SQL Server Agent. Se você estiver usando express, poderá usar um script VBS para executá-lo via Agendador de tarefas.
Era importante no script fazer uma reconstrução primeiro em cada catálogo antes de tentar preencher os índices.
Alguém tem um método que não requer cursores?
fonte
Geralmente é recomendável atualizar o catálogo de texto completo usando gatilhos. Essa é a abordagem que uso no mssql, mas no meu caso, porque tenho um aplicativo localizado com vários requisitos específicos que me levam a uma solução usando gatilhos, que soluções funcionam 100% a partir de 2 anos atrás.
Revise sua implementação neste exemplo .
fonte
Não sei qual é a causa raiz da sua situação, mas isso pode acontecer após a ocorrência de um backup. Não tenho certeza se é isso que está acontecendo no seu caso ou se essa tabela é diferente das outras. Agora você me deixa curioso. Você tem a replicação SQL ativada?
Para uma correção temporária, eu executaria um "Rastreamento" (população) na tabela quando isso acontecer.
http://msdn.microsoft.com/en-us/library/ms142575(v=sql.105).aspx
Use este código:
fonte