Compartilhar via


DBCC DBREINDEX (Transact-SQL)

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

Importante

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Não utilize esse recurso em desenvolvimentos novos e modifique, assim que possível, os aplicativos que atualmente o utilizam. Use ALTER INDEX.

Aplica-se a: SQL Server (SQL Server 2008 à versão atual).

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

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 recriados. Os nomes de tabelas devem seguir as regras para identificadores.

  • index_name
    É o nome do índice a ser recriado. Os nomes de índice devem obedecer às regras para identificadores. Se index_name for especificado, table_name também deverá ser. Se index_name não for especificado ou for " ", todos os índices da tabela serão recriados.

  • fillfactor
    É a porcentagem de espaço em cada página de índice para armazenamento de dados quando o índice é criado ou reconstruído. O fillfactor substitui o fator de preenchimento quando o índice é criado, tornando-se o novo padrão do índice e de qualquer outro índice não clusterizado recriado, uma vez que um índice clusterizado é recriado. Quando fillfactor for 0, DBCC DBREINDEX utilizará o último valor de fator de preenchimento especificado para o índice. Esse valor é armazenado na exibição do catálogo sys.indexes.

    Se fillfactor for especificado, table_name e index_name também deverão ser. Se fillfactor 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.

  • WITH NO_INFOMSGS
    Suprime todas as mensagens informativas com níveis de severidade de 0 a 10.

Comentários

DBCC DBREINDEX recria um índice de uma tabela ou todos os índices definidos para uma tabela. Quando você permite que um índice seja recriado dinamicamente, os índices que impõem a restrição PRIMARY KEY ou UNIQUE podem ser recriados sem a necessidade de descartar e recriar essas restrições. Isso significa que um índice pode ser recriado sem ter conhecimento da estrutura de uma tabela ou suas restrições. Isso pode ocorrer depois de uma cópia em massa de dados na tabela.

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

Ao contrário de DBCC INDEXDEFRAG ou ALTER INDEX com a opção REORGANIZE, DBCC DBREINDEX é uma operação offline. Se um índice não clusterizado estiver sendo recriado, um bloqueio compartilhado será mantido na tabela em questão enquanto durar a operação. Isso impede que sejam efetuadas modificações na tabela. Se o índice clusterizado estiver sendo recriado, um bloqueio de tabela exclusivo será mantido. Isso impede qualquer acesso à tabela, deixando-a, dessa forma, offline. Para executar uma recriação de índice online ou para controlar o grau de paralelismo durante a operação de recriação do í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 recriar ou reorganizar um índice, consulte Reorganizar e recriar índices.

Restrições

Não há suporte para uso de DBCC DBREINDEX nos seguintes objetos:

  • Tabelas do sistema

  • Índices espaciais

  • Índices columnstore xVelocity de memória otimizada

Conjuntos de resultados

A menos que NO_INFOMSGS seja especificado (o nome de tabela deve ser especificado), DBCC DBREINDEX sempre retornará:

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

Permissões

O chamador deve possuir a tabela ou ser um 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

A.Recriando 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 AdventureWorks.

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

B.Recriando todos os índices

O exemplo a seguir recria todos os índices da tabela Employee no AdventureWorks usando um valor de fator de preenchimento de 70.

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

Consulte também

Referência

ALTER TABLE (Transact-SQL)

CREATE TABLE (SQL Server)

DBCC (Transact-SQL)

sys.indexes (Transact-SQL)

sys.dm_db_index_physical_stats (Transact-SQL)

ALTER INDEX (Transact-SQL)