zoukankan      html  css  js  c++  java
  • MS SQL2005 数据索引重建(Index Defragment)脚本

    MS SQL Server 中索引很多,时间长了,最好重建一下,保证数据库的可靠性。

    Step 1. 获取index, 建立执行脚本。

    CREATE TABLE #table_index (  
     table_index_id  INT IDENTITY(1, 1)  NOT NULL,   
     table_name  VARCHAR(255)   NULL,   
     index_name  VARCHAR(255)   NULL,   
     sql_statement  VARCHAR(5000)   NULL,  
       )  

    INSERT #table_index (  
     table_name,   
     index_name)  
    SELECT  c.name + '.' +   
      a.name AS table_name,   
     b.name AS index_name  
    FROM sysobjects a   
    INNER JOIN sysindexes b   
    ON  a.id = b.id  
    AND b.indid <> 0 -- table  itself
    AND   b.indid <> 255 -- text column  
    AND  a.name <> 'dtproperties'  
    AND a.type = 'u'
    INNER JOIN sysusers c   
    ON  c.uid = a.uid  
    ORDER BY 1  
     
    IF @@ERROR <> 0  
     BEGIN  
      RAISERROR('error occured while populating a temp table', 16, 1)  
      RETURN  
     END  
     
    UPDATE  #table_index   
    SET  sql_statement =   
    'DBCC INDEXDEFRAG(' + db_name() + ', ''' + table_name + ''',''' + index_name + ''')'   
    FROM  #table_index a

    select * from #table_index  

    执行上述脚本,获取index 集合

    Step2: 然后 从结果集中拷贝sql_statement列内容到sql management studio.

    执行这些dbcc command:

     DBCC INDEXDEFRAG(hotel, 'dbo.GuestInfo','PK__GuestInf__0C47285A15502E78')

    .......

    Step3: check result when finished.检查结果中的Message信息,确保成功。

    Done.

  • 相关阅读:
    关于发布版本号管理
    WWF
    C#编码规范和命名规则
    使用正则表达式更改编译版本号
    .net2005登录控件
    读取web.config自定义配置节
    在SQL SERVER 2005 中使用XML
    CVSNT用户权限配置
    共享鼠标
    《Ajax基础教程》
  • 原文地址:https://www.cnblogs.com/simonhaninmelbourne/p/1415067.html
Copyright © 2011-2022 走看看