Compartilhar via


ALTER FULLTEXT CATALOG (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Use esta instrução para alterar as propriedades de um catálogo de texto completo.

Transact-SQL convenções de sintaxe

Sintaxe

ALTER FULLTEXT CATALOG catalog_name
{ REBUILD [ WITH ACCENT_SENSITIVITY = { ON | OFF } ]
| REORGANIZE
| AS DEFAULT
}

Argumentos

catalog_name

Especifica o nome do catálogo a ser modificado. Se um catálogo com o nome especificado não existir, SQL Server retornará um erro e não executará a operação ALTER.

REBUILD

O SQL Server Database Engine recria todo o catálogo. Quando você recria um catálogo, o catálogo existente é excluído e um novo catálogo é criado em seu lugar. Todas as tabelas que têm referências de indexação de texto completo são associadas ao novo catálogo. A recriação redefine os metadados de texto completo nas tabelas do sistema de banco de dados.

WITH ACCENT_SENSITIVITY = { ON | OFF }

Especifica se o catálogo a ser alterado diferencia acentuação ou não para indexação e consulta de texto completo.

Para determinar a configuração da propriedade de confidencialidade de ênfase atual de um catálogo de texto completo, use a FULLTEXTCATALOGPROPERTY função com o valor da AccentSensitivity propriedade em relação a catalog_name.

  • Se a função retornar 1, o catálogo de texto completo diferencia acentos.
  • Se a função retornar 0, o catálogo não diferencia acentos.

O padrão de diferenciação de acentuação do catálogo e do banco de dados é o mesmo.

REORGANIZE

O SQL Server Database Engine executa uma mesclagem master, que envolve a mesclagem dos índices menores criados no processo de indexação em um índice grande. A mesclagem dos fragmentos de índice de texto completo pode melhorar o desempenho e liberar recursos de memória e disco. Se houver alterações frequentes no catálogo de texto completo, use este comando periodicamente para reorganizar o catálogo de texto completo.

REORGANIZE também otimiza estruturas internas de índice e catálogo.

Dependendo da quantidade de dados indexados, uma mesclagem mestra pode levar algum tempo para ser concluída. A mesclagem de uma grande quantidade de dados pode criar uma transação de execução prolongada, atrasando o truncamento do log de transações durante um ponto de verificação. Nesse caso, o log de transações pode crescer significativamente sob o modelo de recuperação completa.

Como prática recomendada, verifique se o log de transações contém espaço suficiente para uma transação demorada antes de reorganizar um índice de texto completo grande em um banco de dados que usa o modelo de recuperação completa. Para obter mais informações, consulte Gerenciar o tamanho do arquivo de log de transações.

COMO PADRÃO

Especifica que este catálogo é o padrão. Quando você cria índices de texto completo sem especificar catálogos, o catálogo padrão é usado. Se houver um catálogo de texto completo padrão existente, definir esse catálogo AS DEFAULT substituirá o padrão existente.

Permissões

Para usar ALTER FULLTEXT CATALOG, você precisa de uma das seguintes permissões:

  • ALTER permissão no catálogo de texto completo
  • Associação nas funções de banco de dados fixas db_owner ou db_ddladmin
  • Associação à função de servidor fixa sysadmin

Para usar ALTER FULLTEXT CATALOG ... AS DEFAULT, você precisa de ALTER permissão no catálogo de texto completo e CREATE FULLTEXT CATALOG permissão no banco de dados.

Observações

Quando você executa uma REBUILD operação em um catálogo de texto completo, a operação de recompilação pausa se outra sessão tiver uma transação aberta em execução INSERTou UPDATEDELETE operações em tabelas que pertencem a esse catálogo. A operação de recompilação será retomada somente depois que outra transação for confirmada ou revertída. Você pode monitorar essa situação usando as sys.dm_exec_requests e sys.dm_exec_sessions DMVs (exibições de gerenciamento dinâmico). Você pode ver bloqueios entre a sessão do usuário e as sessões de recompilação em segundo plano, com um tipo de espera de LCK_M_IS.

Da mesma forma, durante uma REORGANIZE operação, você pode ver o FT_MASTER_MERGE tipo de espera na sessão em que o comando está em execução. Esse tipo de espera pode ocorrer quando outras sessões têm transações de execução longa que estão fazendo INSERT, UPDATEou DELETE operações em tabelas no mesmo catálogo de texto completo. Nas DMVs e nas sys.dm_exec_requests DMVs, você pode ver uma ou mais sessões em segundo plano com um LCK_M_IX tipo de espera e o FT_MASTER_MERGEsys.dm_exec_sessions comando. A REORGANIZE operação não é concluída até que esses bloqueios sejam liberados.

A consulta a seguir retorna sessões em segundo plano bloqueadas.

SELECT r1.session_id,
       r1.blocking_session_id,
       r1.wait_type,
       r1.wait_resource,
       r1.last_wait_type,
       r1.command AS BlockedSessionCommand,
       r2.command AS BlockingSessionCommand,
       s1.login_name AS BlockedSessionLogin,
       s2.login_name AS BlockingSessionLogin,
       s1.host_name AS BlockedSessionHost,
       s2.host_name AS BlockingSessionHost,
       r1.status AS BlockedSessionStatus,
       r2.status AS BlockingSessionStatus
FROM sys.dm_exec_requests AS r1
     INNER JOIN sys.dm_exec_sessions AS s1
         ON r1.session_id = s1.session_id
     INNER JOIN sys.dm_exec_sessions AS s2
         ON r1.blocking_session_id = s2.session_id
     LEFT OUTER JOIN sys.dm_exec_requests AS r2
         ON s2.session_id = r2.session_id
WHERE r1.blocking_session_id <> 0
      AND r1.status = 'background'
ORDER BY r1.wait_time DESC;

Exemplos

O exemplo a seguir altera a propriedade AccentSensitivity do catálogo de texto completo padrão ftCatalog que diferencia acentos.

  1. Altere o catálogo para não diferenciar ênfase.

    USE AdventureWorks2025;
    GO
    
    ALTER FULLTEXT CATALOG ftCatalog
    REBUILD WITH ACCENT_SENSITIVITY = OFF;
    
  2. Verifique a confidencialidade do acento.

    SELECT FULLTEXTCATALOGPROPERTY('ftCatalog', 'AccentSensitivity');
    

    A consulta retorna 0, o que significa que o catálogo não diferencia acentos.