Partilhar via


DBCC DBREINDEX (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Recria um ou mais índices para uma tabela no banco de dados especificado.

Importante

Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Em vez disso, use ALTER INDEX.

Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Transact-SQL convenções de sintaxe

Sintaxe

DBCC DBREINDEX
(
    table_name
    [ , index_name [ , fillfactor ] ]
)
    [ WITH NO_INFOMSGS ]

Argumentos

table_name

O nome da tabela que contém o índice ou índices especificados a serem reconstruídos. Os nomes das tabelas devem seguir as regras para identificadores.

index_name

O nome do índice a ser reconstruído. Os nomes dos índices devem estar em conformidade com as regras relativas aos identificadores. Se index_name for especificado, table_name deve ser especificado. Se index_name não for especificado ou estiver ' ', todos os índices da tabela serão reconstruídos.

de fator de preenchimento

A porcentagem de espaço em cada página de índice para armazenar dados quando o índice é criado ou reconstruído. de fator de preenchimento substitui o fator de preenchimento quando o índice foi criado, tornando-se o novo padrão para o índice e para quaisquer outros índices não clusterizados reconstruídos, porque um índice clusterizado é reconstruído.

Quando fator de preenchimento é 0, DBCC DBREINDEX usa o valor do fator de preenchimento especificado pela última vez para o índice. Esse valor é armazenado no sys.indexes exibição de catálogo.

Se de fator de preenchimento for especificado, table_name e index_name deverão ser especificados. Se fator de preenchimento não for especificado, o fator de preenchimento padrão, 100, será usado. Para obter mais informações, consulte Especificar fator de preenchimento para um índice.

COM NO_INFOMSGS

Suprime todas as mensagens informativas com níveis de gravidade de 0 a 10.

Comentários

DBCC DBREINDEX recria um índice para uma tabela ou todos os índices definidos para uma tabela. Ao permitir que um índice seja reconstruído dinamicamente, os índices que impõem restrições de CHAVE PRIMÁRIA ou EXCLUSIVA podem ser reconstruídos sem ter que descartar e recriar essas restrições. Isso significa que um índice pode ser reconstruído sem conhecer a estrutura de uma tabela ou suas restrições. Isso pode ocorrer após uma cópia em massa dos dados na tabela.

DBCC DBREINDEX pode reconstruir todos os índices de uma tabela em uma instrução. Isso é mais fácil do que codificar várias DROP INDEX e CREATE INDEX instruções. Como o trabalho é realizado por uma declaração, DBCC DBREINDEX é automaticamente atômica, enquanto DROP INDEX individuais e CREATE INDEX declarações devem ser incluídas em uma transação para serem atômicas. Além disso, DBCC DBREINDEX oferece mais otimizações do que DROP INDEX individuais e declarações CREATE INDEX.

Ao contrário DBCC INDEXDEFRAG, ou ALTER INDEX com a opção REORGANIZE, DBCC DBREINDEX é uma operação offline. Se um índice não clusterizado estiver sendo reconstruído, um bloqueio compartilhado será mantido na tabela em questão durante a operação. Isso evita modificações na tabela. Se o índice clusterizado estiver sendo reconstruído, um bloqueio de tabela exclusivo será mantido. Isso impede qualquer acesso à tabela, tornando a tabela offline de forma eficaz. Para executar uma reconstrução de índice online ou para controlar o grau de paralelismo durante a operação de reconstrução de índice, use a instrução ALTER INDEX REBUILD com a opção ONLINE.

Para obter mais informações sobre como selecionar um método para reconstruir ou reorganizar um índice, consulte Reorganizar e reconstruir índices.

Restrições

DBCC DBREINDEX não é suportado para uso nos seguintes objetos:

  • Tabelas do sistema
  • Índices espaciais
  • Índices columnstore otimizados para memória

Conjuntos de resultados

A menos que NO_INFOMSGS seja especificado (o nome da tabela deve ser especificado), DBCC DBREINDEX sempre retorna:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Permissões

O chamador deve ser o proprietário da tabela ou ser membro da função de servidor fixa sysadmin , da função de banco de dados fixa db_owner ou da função de banco de dados fixa db_ddladmin.

Exemplos

Um. Reconstruir um índice

O exemplo a seguir recria o índice clusterizado Employee_EmployeeID com um fator de preenchimento de 80 na tabela Employee no banco de dados AdventureWorks2022.

USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID, 80);
GO

B. Reconstruir todos os índices

O exemplo a seguir recria todos os índices na tabela Employee em AdventureWorks2022 usando um valor de fator de preenchimento de 70.

USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);
GO

Ver também