Les partenaires publicitaires:

Comment défragmenter une base de données de MSSQL

Une fragmentation de base de données se produit lorsque la commande logique de l'indice de base de données ne correspond pas à la répartition physique des données sur le disque. Comme les changements de données dans la base de données, des tables d'index de la base de données dispersés sur tout le disque. Il augmente le temps nécessaire pour accéder aux données, entraînant une diminution de la performance des applications. Les commandes de la console de base de données MSSQL vous permettent de reconstruire ou indices de défragmentation. Vous devez utiliser l'instruction DBCC DBEREINDEX de défragmenter un indice de base de données MSSQL.

Instructions

  1. 1

    Cliquez sur le bouton "Démarrer" de Windows et sélectionnez "Tous les programmes." Cliquez pour ouvrir la "console de gestion SQL."

  2. 2

    Entrez les instructions SQL suivantes dans la fenêtre de la console:

    SET NOCOUNT ON-
    DECLAREtablename varchar (255) -
    DECLAREexecstr varchar (400) -
    DECLAREobjectid int
    DECLAREindexid int
    DECLAREfrag decimal-
    DECLAREmaxfrag décimal;

    maxfrag SELECT = 30,0;

    DECLARE tables CURSOR FOR
    TABLE_SCHEMA SELECT + '.' + TABLE_NAME
    DE INFORMATION_SCHEMA.TABLES
    Où base de table 'TABLE_TYPE =;

    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,
    Étendues int,
    ExtentSwitches int,
    AvgFreeBytes int,
    AvgPageDensity int,
    ScanDensity décimal,
    BestCount int,
    ActualCount int,
    LogicalFrag décimal,
    ExtentFrag décimal);

    Tables ouvertes;

    FETCH PROCHAINE
    À partir de tables
    ENtablename;

    PENDANT@@FETCH_STATUS = 0
    COMMENCER
    INSERT INTO #fraglist
    EXEC ('DBCC SHOWCONTIG (' '' +tablename + '' ')




     AVEC FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS ') -

    FETCH PROCHAINE

     À partir de tables
    EN @ tablename-

    FIN;

    Tableaux- FERMER
    DEALLOCATE tables;

    DECLARE indices CURSOR FOR
    SELECT ObjectName, ObjectId, IndexId, LogicalFrag
    DE #fraglist
    OÙ LogicalFrag> =maxfrag

     ET INDEXPROPERTY (ObjectId, IndexName, 'IndexDepth')> 0-

    Indices ouverte;

    FETCH PROCHAINE
    À partir des indices
    ENtablename,objectid,indexid,frag;

    PENDANT@@FETCH_STATUS = 0
    COMMENCER
    PRINT 'exécution DBCC INDEXDEFRAG (0,' + RTRIM (tablename) + ',



     '+ RTRIM (indexid) +') - la fragmentation actuellement '
    + RTRIM (convert (varchar (15), @ frag)) + '%' -

    execstr SELECT = 'DBCC INDEXDEFRAG (0,' + RTRIM (objectid) + ',

     '+ RTRIM (indexid) +') -

    EXEC (execstr);

    FETCH PROCHAINE

     À partir des indices
    ENtablename,objectid,indexid, @ fragmentation

    FIN;

    Indexes- FERMER
    DEALLOCATE indices;

    DROP TABLE # fraglist-
    GO

  3. 3

    Cliquez sur "Fichier" et sélectionner "Exécuter" pour défragmenter l'index de base de données MSSQL.

» » » » Comment défragmenter une base de données de MSSQL