DBCC DBREINDEX (Transact-SQL)

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

Observação importanteImportante

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.

Ícone de vínculo de tópicoConvenções de 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 armazenar dados quando o índice for criado ou recriado. 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, já que um índice clusterizado foi 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 Fator de preenchimento.

  • 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 Reorganizando e recriando índices.

Restrições

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

  • Tabelas do sistema

  • Índices espaciais

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 AdventureWorks2008R2.

USE AdventureWorks2008R2; 
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 AdventureWorks2008R2 usando um valor de fator de preenchimento de 70.

USE AdventureWorks2008R2; 
GO
DBCC DBREINDEX ("HumanResources.Employee", " ", 70);
GO