Como desfragmentar um banco de dados mssql

Uma fragmentação ocorre quando o banco de dados de ordem lógica do índice de base de dados não corresponde a alocação física dos dados no disco. Como as alterações de dados no banco de dados, as tabelas de índice de banco de dados tornam-se espalhados por todo o disco. Ele aumenta o tempo necessário para acessar os dados, resultando em diminuição do desempenho de aplicações. Os comandos do console do banco de dados MSSQL lhe permitem reconstruir ou índices de desfragmentação. Você precisa usar a instrução DBCC DBEREINDEX para desfragmentar um índice de banco de dados MSSQL.

  • Clique no "Começar" botão do Windows e selecione "Todos os programas." Clique para abrir o "Console de Gerenciamento de SQL."

  • Digite as seguintes instruções SQL na janela do console:

    NOCOUNT SET ON-
    DECLARE @TableName varchar (255) -
    DECLARE @execstr varchar (400) -
    DECLARE @objectid INT
    DECLARE @indexid INT
    DECLARE @frag decimal-
    DECLARE @maxfrag decimal;

    SELECIONAR @maxfrag = 30,0;

    DECLARE tabelas do cursor para
    TABLE_SCHEMA Select + `.` + TABLE_NAME
    de information_schema.tables
    ONDE TABLE_TYPE = `tabela base`;

    CRIAR #fraglist TABLE (
    ObjectName char (255),
    ObjectId int,
    IndexName char (255),
    IndexId int,
    int lvl,
    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;

    BUSQUE PRÓXIMA
    a partir de tabelas
    INTO @TableName;

    ENQUANTO @@ FETCH_STATUS = 0
    INÍCIO
    INSERT INTO #fraglist
    EXEC ( `DBCC SHOWCONTIG (` `` + + @TableName `` `)

     Com rapidez, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS `) -

    BUSQUE PRÓXIMA

     a partir de tabelas
    INTO @ tablename-

    FIM;

    mesas- FECHAR
    mesas DEALLOCATE;



    DECLARE índices do cursor para
    SELECIONAR ObjectName, ObjectId, IndexId, LogicalFrag
    DE #fraglist
    ONDE LogicalFrag gt; = @maxfrag

     E INDEXPROPERTY (ObjectId, IndexName, `IndexDepth`) gt; 0-

    índices aberta;

    BUSQUE PRÓXIMA
    DE índices
    INTO @TableName, @objectid, @indexid, @frag;

    ENQUANTO @@ FETCH_STATUS = 0
    INÍCIO
    PRINT `Executar DBCC INDEXDEFRAG (0,` + RTRIM (@TableName) + `,

     `+ RTRIM (@indexid) +`) - fragmentação atualmente `
    + RTRIM (CONVERT (varchar (15), @ frag)) + `%` -

    SELECIONAR @execstr = `DBCC INDEXDEFRAG (0,` + RTRIM (@objectid) + `,

     `+ RTRIM (@indexid) +`) `-

    EXEC (@execstr);

    BUSQUE PRÓXIMA

     DE índices
    INTO @TableName, @objectid, @indexid, @ fragmentação

    FIM;

    indexes- FECHAR
    índices DEALLOCATE;

    DROP TABLE # fraglist-
    IR

  • Clique "Arquivo" e selecione "Corre" desfragmentar o índice de banco de dados MSSQL.

De esta maneira? Compartilhar em redes sociais:

LiveInternet