AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 123418
Accepted
MetaGuru
MetaGuru
Asked: 2015-12-11 14:55:23 +0800 CST2015-12-11 14:55:23 +0800 CST 2015-12-11 14:55:23 +0800 CST

Um Catálogo de Texto Completo com Controlar alterações: AUTO atualizará automaticamente se o Controle de Alterações para essa tabela não estiver ativado?

  • 772

Eu tenho esta tabela de banco de dados que deve manter o índice de texto completo atualizado. No entanto, não estou vendo isso acontecer (sem erro no log porque o último log que vejo foi quando o acionei manualmente).

Aqui está o que estou vendo...

propriedades do catálogo de texto completo

mas na própria mesa...

insira a descrição da imagem aqui

Poderia ser por isso que não está acontecendo automaticamente?

index sql-server-2012
  • 2 2 respostas
  • 6427 Views

2 respostas

  • Voted
  1. Best Answer
    Kin Shah
    2015-12-15T09:43:14+08:002015-12-15T09:43:14+08:00

    Você está olhando para o lugar errado.

    Você tem que verificar como abaixo:

    insira a descrição da imagem aqui

    insira a descrição da imagem aqui

    Usando T-SQL ..

    Use database_name
    go
    ALTER FULLTEXT INDEX ON schema.table_name SET CHANGE_TRACKING AUTO;
    

    Depois de concluído, você pode verificar o status da última data e hora preenchida

    -- script source : http://stackoverflow.com/a/10505496/1387418
    -- Modified by Kin on Dec 14' 2015 to reflect the FTCatalogName
    DECLARE @CatalogName VARCHAR(MAX)
    SET     @CatalogName = 'AW2008FullTextCatalog' -- change here !
    
    SELECT name as FTCatalogName, 
        DATEADD(ss, FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateCompletionAge'), '1/1/1990') AS LastPopulated
        ,(SELECT CASE FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateStatus')
            WHEN 0 THEN 'Idle'
            WHEN 1 THEN 'Full Population In Progress'
            WHEN 2 THEN 'Paused'
            WHEN 3 THEN 'Throttled'
            WHEN 4 THEN 'Recovering'
            WHEN 5 THEN 'Shutdown'
            WHEN 6 THEN 'Incremental Population In Progress'
            WHEN 7 THEN 'Building Index'
            WHEN 8 THEN 'Disk Full.  Paused'
            WHEN 9 THEN 'Change Tracking' END) AS PopulateStatus
    FROM sys.fulltext_catalogs
    

    insira a descrição da imagem aqui

    Insira alguns dados ..

    insert into HumanResources.JobCandidate
    (BusinessEntityID, Resume, ModifiedDate)
    values 
        (4, NULL, DEFAULT)
    

    Agora você verá que o Catálogo FT está atualizado.

    insira a descrição da imagem aqui

    Nos logs ( ..\MSSQL\Log\SQLFT*) também, abaixo estará a mensagem...

    14/12/2015 12:36:51.29 spid50s Informativo: preenchimento automático de texto completo concluído para tabela ou exibição indexada '[AdventureWorks2012].[HumanResources].[JobCandidate]' (tabela ou ID de exibição indexada '1589580701', ID do banco de dados ' 5'). Número de documentos processados: 1. Número de documentos com falha: 0. Número de documentos que serão repetidos: 0.

    De BOL :

    Por padrão, ou se você especificar CHANGE_TRACKING AUTO, o mecanismo de texto completo usará o preenchimento automático no índice de texto completo. Após a conclusão do preenchimento total inicial, as alterações são rastreadas à medida que os dados são modificados na tabela base e as alterações rastreadas são propagadas automaticamente. No entanto, o índice de texto completo é atualizado em segundo plano, portanto, as alterações propagadas podem não ser refletidas imediatamente no índice .

    Por padrão, o SQL Server preenche totalmente um novo índice de texto completo assim que ele é criado. No entanto, uma população completa pode consumir uma quantidade significativa de recursos. Portanto, ao criar um índice de texto completo durante os períodos de pico, geralmente é uma prática recomendada atrasar a população completa até um horário fora do pico, principalmente se a tabela base de um índice de texto completo for grande. No entanto, o catálogo de texto completo ao qual o índice pertence não pode ser usado até que todos os seus índices de texto completo sejam preenchidos.

    Além disso, consulte Melhorar o desempenho dos índices de texto completo

    • 18
  2. WWC
    2018-03-22T03:42:28+08:002018-03-22T03:42:28+08:00

    Por algum motivo, o indexador de texto completo parou de preencher automaticamente para um dos meus bancos de dados SQL 2012 depois que minha réplica secundária do banco de dados do Grupo de Disponibilidade assumiu e se tornou a réplica primária.

    Depois de excluir o Índice de texto completo e recriá-lo na tabela com o preenchimento automático ativado, ele começou a ser preenchido novamente. Usei o SQL Management Studio e o assistente de criação de índice de texto completo para recriar o índice.

    Eu estava preocupado com quanto tempo levaria para executar uma indexação completa dos dados. Fiquei agradavelmente surpreso ao ver que levou apenas 5 minutos para reindexar 3 colunas de texto de uma tabela com 547.619 registros.

    As configurações de rastreamento de alterações no nível da tabela mencionadas na pergunta permaneceram desativadas. Portanto, o controle de alterações do Índice de texto completo é definitivamente diferente da configuração do controle de alterações da tabela. Você NÃO precisa ter o rastreamento de alteração de tabela ativado para que o rastreamento de alteração de indexação de texto completo e o preenchimento automático da indexação de texto completo funcionem.

    Executar a consulta a seguir no banco de dados revelará a última vez que seu indexador de texto completo executou um rastreamento.

      SELECT  * FROM sys.fulltext_indexes
    

    Quando o preenchimento automático está ativado, crawl_end_date deve mudar depois que você inserir dados na tabela.

    Além disso, você notará que, ao executar uma consulta que usa o índice de texto completo, ela mostrará os dados mais recentes:

      select TOP 10 * from YOURDATATABLE where contains((YOUR_indexed_column),'YOURSEARCHTERM') order by YOURPRIMARYKEYCOLUMN desc
    

    Referências adicionais:

    Artigo que descreve diferentes métodos de população de pesquisa de texto completo: https://msdn.microsoft.com/en-us/library/ms142575%28v=sql.100%29.aspx

    Informações sobre como consultar uma tabela indexada de texto completo: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#queries

    Artigo sobre arquitetura de pesquisa de texto completo: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#architecture

    • 1

relate perguntas

  • Como criar várias entradas no índice com base nos campos de uma linha?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quanto "Padding" coloco em meus índices?

  • O que significa "índice" em RDBMSs? [fechado]

  • Como criar um índice condicional no MySQL?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve