A fragmentação do banco de dados ocorre quando a ordem lógica do índice de banco de dados não coincide com a alocação física dos dados no disco. Como as alterações de dados no banco de dados , as tabelas de índice do banco de dados tornam-se espalhados por todo o disco. Ele aumenta o tempo necessário para acessar os dados , resultando em um desempenho aplicações diminuiu . Os comandos do console de banco de dados MSSQL permitem reconstruir ou desfragmentação índices. Você precisa usar a instrução DBCC DBEREINDEX para desfragmentar um índice de banco de dados MSSQL . Instruções
1
Clique no botão " Iniciar" do Windows e selecione "Todos os Programas". Clique para abrir a
2
Digite os seguintes comandos SQL na janela do console " Console de Gerenciamento de SQL. " :
SET NOCOUNT ON ;
DECLARE @ nometabela varchar ( 255);
varchar DECLARE @ execstr (400 );
DECLARE @ objectid int;
DECLARE @ indexid int;
DECLARE @ frag decimal ;
DECLARE @ MaxFrag decimal;
SELECT @ MaxFrag = 30,0 ;
DECLARE tabelas CURSOR PARA
Selecione TABLE_SCHEMA + '.' + TABLE_NAME
de information_schema.tables
ONDE TABLE_TYPE = ' BASE TABLE' ;
CREATE TABLE # fraglist (
ObjectName char ( 255),
ObjectId int,
IndexName char ( 255),
IndexId int,
Lvl int,
CountPages int,
CountRows int,
MinRecSize int,
MAXRECSIZE int,
AvgRecSize int,
ForRecCount int,
Extensões int ,
ExtentSwitches int,
AvgFreeBytes int,
AvgPageDensity int,
ScanDensity decimal ,
BestCount int,
ActualCount int,
LogicalFrag decimal ,
ExtentFrag decimal );
mesas abertas;
FETCH NEXT
de tabelas
INTO @ nometabela ;
ENQUANTO @ @ FETCH_STATUS = 0
BEGIN
INSERT INTO # fraglist
EXEC (' DBCC SHOWCONTIG ( '' ' + @ nometabela +'' ')
COM RÁPIDO, TABLERESULTS , ALL_INDEXES , NO_INFOMSGS ');
FETCH NEXT
de tabelas
INTO @ nometabela ;
END;
mesas próximas;
tabelas DEALLOCATE ;
DECLARAR índices CURSOR PARA
Selecione ObjectName , ObjectId , IndexId , LogicalFrag
DE # fraglist
ONDE LogicalFrag > = @ MaxFrag
E INDEXPROPERTY ( ObjectId , IndexName , ' IndexDepth ')> 0;
índices
aberta;
FETCH NEXT
DE índices
INTO @ tablename , @ objectid , @ indexid , @ frag ;
ENQUANTO @ @ FETCH_STATUS = 0
BEGIN
PRINT ' A execução de DBCC INDEXDEFRAG (0,' + RTRIM ( @ tablename ) + ' ,
' + RTRIM ( @ indexid ) + ') - fragmentação atualmente 'em
+ RTRIM ( CONVERT ( varchar ( 15) , @ frag ) ) +' % ';
SELECT @ execstr =' DBCC INDEXDEFRAG (0, ' + RTRIM ( @ objectid ) + ' ,
' + RTRIM ( @ indexid ) + ')' ;
EXEC ( @ execstr );
FETCH NEXT
DE índices
INTO @ tablename , @ objectid , @ indexid , @ frag ;
END ;
índices próximos;
índices DEALLOCATE ;
DROP TABLE # fraglist ;
GO
3
Clique em "Arquivo " e selecione " Executar" para desfragmentar o índice do banco de dados MSSQL
< . br>