Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Criar e manter um índice de texto completo envolve preencher o índice usando um processo chamado população (também conhecido como rastreamento ).
Tipos de população
Um índice de texto completo suporta os seguintes tipos de população:
- População completa
- População automática ou manual com base no rastreamento de alterações em
- População incremental com base em um carimbo de data/hora
População total
Durante uma população completa, as entradas de índice são criadas para todas as linhas de uma tabela ou vista indexada. Uma população completa de um índice de texto completo, cria entradas de índice para todas as linhas da tabela base ou exibição indexada.
Por padrão, o SQL Server preenche um novo índice de texto completo totalmente assim que ele é criado.
- Por um lado, uma população completa pode consumir uma quantidade significativa de recursos. Portanto, ao criar um índice de texto completo durante períodos de pico, geralmente é uma prática recomendada atrasar a população completa até um horário fora de pico, particularmente se a tabela base de um índice de texto completo for grande.
- Por outro lado, o catálogo de texto completo ao qual o índice pertence não é utilizável até que todos os seus índices de texto completo sejam preenchidos.
Para criar um índice de texto completo sem preenchê-lo imediatamente, especifique a cláusula CHANGE_TRACKING OFF, NO POPULATION
na instrução CREATE FULLTEXT INDEX
. Se você especificar CHANGE_TRACKING MANUAL
, o mecanismo de Full-Text não preencherá o novo índice de texto completo até que você execute uma instrução ALTER FULLTEXT INDEX
usando a cláusula START FULL POPULATION
ou START INCREMENTAL POPULATION
.
Exemplo - Criar um índice de texto completo sem executar uma população completa
O exemplo a seguir cria um índice de texto completo na tabela Production.Document
do banco de dados de exemplo AdventureWorks
. Este exemplo usa WITH CHANGE_TRACKING OFF, NO POPULATION
para atrasar a população completa inicial.
CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
CREATE FULLTEXT CATALOG AW_Production_FTCat;
CREATE FULLTEXT INDEX ON Production.Document
(
Document --Full-text index column name
TYPE COLUMN FileExtension --Name of column that contains file type information
Language 1033 --1033 is LCID for the English language
)
KEY INDEX ui_ukDoc
ON AW_Production_FTCat
WITH CHANGE_TRACKING OFF, NO POPULATION;
GO
Exemplo - Executar uma população completa em uma tabela
O exemplo a seguir executa uma população completa na tabela Production.Document
da base de dados de exemplo AdventureWorks
.
ALTER FULLTEXT INDEX ON Production.Document
START FULL POPULATION;
População baseada no rastreio de alterações
Opcionalmente, pode utilizar o rastreio de alterações para manter um índice de texto completo após a sua população completa inicial. Há uma pequena sobrecarga associada ao controle de alterações porque o SQL Server mantém uma tabela na qual ele controla as alterações na tabela base desde a última população. Quando você usa o controle de alterações, o SQL Server mantém um registro das linhas na tabela base ou no modo de exibição indexado que foram modificadas por atualizações, exclusões ou inserções. As alterações de dados feitas por meio de WRITETEXT e UPDATETEXT não são refletidas no índice de texto completo e não são captadas com o controle de alterações.
Observação
Para tabelas que contêm uma coluna de carimbo de data/hora, você pode usar a população incremental em vez do controle de alterações.
Quando você habilita o controle de alterações durante a criação do índice, o SQL Server preenche totalmente o novo índice de texto completo imediatamente após sua criação. Depois disso, as alterações são monitorizadas e propagadas para o índice de texto completo.
Ativar o controlo de alterações
Existem dois tipos de controlo de alterações:
- Automático (opção
CHANGE_TRACKING AUTO
). O controle automático de alterações é o comportamento padrão. - Manual (opção
CHANGE_TRACKING MANUAL
).
O tipo de controle de alterações determina como o índice de texto completo é preenchido, da seguinte maneira:
Preenchimento automático
Por padrão, ou se especificar
CHANGE_TRACKING AUTO
, o motor Full-Text usa o preenchimento automático no índice de texto completo. Após a conclusão da população completa inicial, as alterações são controladas à medida que os dados são modificados na tabela base e as alterações controladas 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.Para começar a monitorizar as alterações com preenchimento automático
CRIAR ÍNDICE DE TEXTO COMPLETO ... COM ACOMPANHAMENTO DE ALTERAÇÕES AUTOMÁTICO
ALTERAR ÍNDICE DE TEXTO COMPLETO ... SET CHANGE_TRACKING AUTO
Exemplo - Alterar um índice de texto completo para usar o controle automático de alterações
O exemplo a seguir altera o índice de texto completo da tabelaHumanResources.JobCandidate
da base de dados de exemploAdventureWorks
para usar o rastreio de alterações com população automática.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate SET CHANGE_TRACKING AUTO; GO
População manual
Se especificar CHANGE_TRACKING MANUAL, o motor Full-Text utiliza a população manual no índice de texto completo. Após a conclusão da população completa inicial, as alterações são controladas à medida que os dados são modificados na tabela base. No entanto, eles não são propagados para o índice de texto completo até que você execute a instrução ALTER FULLTEXT INDEX ... START UPDATE POPULATION. Você pode usar o SQL Server Agent para chamar essa instrução Transact-SQL periodicamente.
Para começar a rastrear as alterações com de preenchimento manual
CRIAR ÍNDICE DE TEXTO COMPLETO ... COM ACOMPANHAMENTO_DE_ALTERAÇÕES MANUAL
ALTERAR ÍNDICE DE TEXTO COMPLETO ... DEFINIR CHANGE_TRACKING MANUAL
Exemplo - Crie um índice de texto completo com o controle manual de alterações
O exemplo a seguir irá criar um índice de texto completo que usará o rastreio de alterações com o preenchimento manual na tabelaHumanResources.JobCandidate
do banco de dados de exemploAdventureWorks
.USE AdventureWorks; GO CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID); CREATE FULLTEXT CATALOG ft AS DEFAULT; CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand WITH CHANGE_TRACKING=MANUAL; GO
Exemplo - Executar uma execução manual de população
O exemplo a seguir executa uma população manual no índice de texto completo controlado por alterações da tabelaHumanResources.JobCandidate
do banco de dados de exemploAdventureWorks
.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION; GO
Desativar o controlo de alterações
CRIAR ÍNDICE DE TEXTO COMPLETO ... COM CHANGE_TRACKING DESLIGADO
ALTERAR ÍNDICE DE TEXTO COMPLETO ... SET CHANGE_TRACKING OFF
População incremental com base numa marca temporal
Uma população incremental é um mecanismo alternativo para preencher manualmente um índice de texto completo. Se uma tabela tiver um grande volume de inserções, o uso de população incremental pode ser mais eficiente do que o uso de população manual.
Você pode executar uma população incremental para um índice de texto completo que tenha CHANGE_TRACKING definido como MANUAL ou OFF.
O requisito para a população incremental é que a tabela indexada tem de ter uma coluna do carimbo de data/hora do tipo de dados . Se uma coluna de carimbo de data/hora não existir, a população incremental não poderá ser executada.
O SQL Server usa a coluna de timestamp para identificar linhas que foram alteradas desde a última atualização. Em seguida, a população incremental atualiza o índice de texto completo para linhas adicionadas, excluídas ou modificadas após a última população, ou enquanto a última população estava em andamento. No final de uma população, o motor Full-Text regista um novo valor de carimbo de data/hora . Esse valor é o maior valor de de carimbo de data/hora que o SQL Gatherer encontrou. Este valor será utilizado quando iniciar a próxima população incremental.
Em alguns casos, o pedido de uma população incremental resulta numa população completa.
- Uma solicitação de população incremental em uma tabela sem um carimbo de data/hora coluna resulta em uma operação de população completa.
- Se a primeira população em um índice de texto completo for uma população incremental, ela indexará todas as linhas, tornando-a equivalente a uma população completa.
- Se quaisquer metadados que afetem o índice de texto completo da tabela tiverem sido alterados desde a última população, as solicitações de população incrementais serão implementadas como populações completas. Isso inclui alterações de metadados causadas pela alteração de qualquer definição de coluna, índice ou índice de texto completo.
Executar uma população incremental
Para executar uma população incremental, execute uma instrução ALTER FULLTEXT INDEX
usando a cláusula START INCREMENTAL POPULATION
.
Criar ou alterar um cronograma para um preenchimento gradual
No Management Studio, no Pesquisador de Objetos, expanda o servidor.
Expanda Bases de Dadose, em seguida, expanda a base de dados que contém o índice completo de texto.
Expanda Tabelas.
Clique com o botão direito do mouse na tabela na qual o índice de texto completo está definido, selecione Full-Text índicee, no menu de contexto índiceFull-Text, clique em Propriedades. Isso abre a caixa de diálogo Propriedades do índice de texto completo.
Importante
Se a tabela base ou vista não contiver uma coluna do tipo de dados carimbo de data/hora, a população incremental não será possível.
No painel Selecionar uma página, selecione Horários.
Use esta página para criar ou gerenciar agendas para um trabalho do SQL Server Agent que inicia uma população de tabela incremental na tabela base ou no modo de exibição indexado do índice de texto completo.
As opções são as seguintes:
Para criar uma nova agenda, clique em Novo.
Isso abre a caixa de diálogo Nova Full-Text Tabela de Indexação, onde pode-se criar um cronograma. Para salvar a agenda, clique em OK.
Importante
Um trabalho do SQL Server Agent (Iniciar População de Tabela Incremental em database_name.table_name) é associado a uma nova agenda depois que você sai da caixa de diálogo Propriedades de Índice Full-Text. Se você criar várias agendas para o mesmo índice de texto completo, todas elas usarão o mesmo trabalho.
Para alterar uma agenda existente, selecione a agenda existente e clique em Editar.
Isso abre a caixa de diálogo Nova Tabela de Indexação Full-Text Agenda da, onde é possível modificar o cronograma.
Observação
Para obter informações sobre como modificar um trabalho do SQL Server Agent, consulte Modificar um trabalho.
Para remover uma agenda existente, selecione a agenda existente e clique em Excluir.
Selecione OK.
Solucionar erros em uma população de texto completo (rastreamento)
Quando ocorre um erro durante um rastreamento, a ferramenta de registo de rastreamento da Pesquisa Full-Text cria e mantém um registo de rastreamento, que é um arquivo de texto sem formatação. Cada log de rastreamento corresponde a um catálogo de texto completo específico. Por padrão, os logs de rastreamento de uma determinada instância (neste exemplo, a instância padrão) estão localizados em %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG
pasta.
O arquivo de log de rastreamento segue o seguinte esquema de nomenclatura:
SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]
As partes variáveis do nome do arquivo de log de rastreamento são as seguintes.
- < DatabaseID> - A ID de um banco de dados. < dbid> é um número de cinco dígitos com zeros à esquerda.
- < FullTextCatalogID> - ID de catálogo de texto completo. < catid> é um número de cinco dígitos com zeros à esquerda.
- < n> - É um número inteiro que indica que existem um ou mais logs de rastreamento do mesmo catálogo de texto completo.
Por exemplo, SQLFT0000500008.2
é o arquivo de log de rastreamento para um banco de dados com ID de banco de dados = 5 e ID de catálogo de texto completo = 8. O 2 no final do nome do arquivo indica que há dois arquivos de log de rastreamento para esse par banco de dados/catálogo.
Ver também
sys.dm_fts_index_population (Transact-SQL)
Introdução ao Full-Text Pesquisa
Criar e gerir Full-Text índices
CRIAR ÍNDICE DE TEXTO COMPLETO (Transact-SQL)
ALTERAR ÍNDICE DE TEXTO COMPLETO (Transact-SQL)