Partilhar via


ALTERAR CATÁLOGO DE TEXTO COMPLETO (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

Convenções sintáticas Transact-SQL

Sintaxe

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

Arguments

catalog_name

Especifica o nome do catálogo a modificar. Se um catálogo com o nome especificado não existir, SQL Server devolve um erro e não realiza a operação ALTER.

REBUILD

O SQL Server Database Engine reconstrói todo o catálogo. Quando se reconstrói um catálogo, o catálogo existente é eliminado e criado um novo catálogo no seu lugar. Todas as tabelas que têm referências de indexação em texto completo estão associadas ao novo catálogo. A reconstrução reinicia os metadados de texto completo nas tabelas do sistema da base de dados.

COM ACCENT_SENSITIVITY = { ON | DESLIGADO }

Especifica se o catálogo a alterar é sensível ao acento ou insensível ao acento para indexação e consulta de texto completo.

Para determinar a definição atual da propriedade de sensibilidade ao acento de um catálogo de texto completo, use a FULLTEXTCATALOGPROPERTY função com o valor da AccentSensitivity propriedade em relação à catalog_name.

  • Se a função devolver 1, o catálogo de texto completo é sensível ao acento.
  • Se a função devolver 0, o catálogo não é sensível ao acento.

A sensibilidade padrão do acento do catálogo e da base de dados é a mesma.

REORGANIZAR

O SQL Server Database Engine realiza uma fusão master, que envolve a fusão dos índices menores criados durante o processo de indexação num único índice grande. A fusão dos fragmentos de índice em texto completo pode melhorar o desempenho e libertar recursos de disco e memória. 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 as estruturas internas de índice e catálogo.

Dependendo da quantidade de dados indexados, uma fusão mestre pode demorar algum tempo a ser concluída. A fusão de uma grande quantidade de dados pode criar uma transação de longa duração, atrasando o truncamento do registo de transações durante um checkpoint. Neste caso, o registo de transações pode crescer significativamente sob o modelo de recuperação completa.

Como boa prática, certifique-se de que o seu registo de transações contém espaço suficiente para uma transação de longa duração antes de reorganizar um grande índice de texto integral numa base de dados que utilize o modelo de recuperação completo. Para mais informações, consulte Gerir o tamanho do ficheiro de registo de transações.

COMO PADRÃO

Especifica que este catálogo é o catálogo padrão. Quando cria índices em texto completo sem especificar catálogos, é utilizado o catálogo padrão. Se existir um catálogo de texto completo predefinido existente, definir esse catálogo AS DEFAULT sobrepõe-se ao padrão existente.

Permissions

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

  • ALTER Permissão no catálogo de texto integral
  • A pertença à db_owner ou db_ddladmin funções fixas na base de dados
  • A pertença ao sysadmin fixou o papel de servidor

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

Observações

Quando executa uma REBUILD operação num catálogo de texto completo, a operação de reconstrução pausa se outra sessão tiver uma transação aberta a correr INSERT, UPDATE, ou DELETE operações em tabelas que pertencem a esse catálogo. A operação de reconstrução recomeça apenas depois de essa outra transação ser confirmada ou revertida. Pode monitorizar esta situação usando as vistas de gestão dinâmica de sys.dm_exec_requests e sys.dm_exec_sessions (DMVs). Podes ver bloqueios entre a sessão do utilizador e as sessões de reconstrução em segundo plano, com um tipo de espera .LCK_M_IS

De forma semelhante, durante uma REORGANIZE operação, pode ver o FT_MASTER_MERGE tipo de espera na sessão onde o comando está a correr. Este tipo de espera pode ocorrer quando outras sessões têm transações de longa duração que estão a fazer INSERT, UPDATE, ou DELETE operações em tabelas do mesmo catálogo de texto completo. Nos sys.dm_exec_requests DMVs e sys.dm_exec_sessions DMV, podes ver uma ou mais sessões em segundo plano com um LCK_M_IX tipo de espera e o FT_MASTER_MERGE comando. A REORGANIZE operação só termina quando esses bloqueios são libertados.

A consulta seguinte devolve sessões bloqueadas em segundo plano.

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;

Examples

O exemplo seguinte altera a AccentSensitivity propriedade do catálogo ftCatalogde texto completo por defeito, que é sensível ao acento.

  1. Muda o catálogo para insensível ao sotaque.

    USE AdventureWorks2025;
    GO
    
    ALTER FULLTEXT CATALOG ftCatalog
    REBUILD WITH ACCENT_SENSITIVITY = OFF;
    
  2. Verifica a sensibilidade do sotaque.

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

    A consulta devolve 0, o que significa que o catálogo não é sensível ao acento.