一个删除指定表的所有索引和统计的过程_mssql2005

复制代码 代码如下:

------------------------------------------------------------------------
-- Author : HappyFlyStone
-- Date : 2009-09-05 00:57:10
-- Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
-- Apr 14 2006 01:12:25
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
--
------------------------------------------------------------------------
IF EXISTS (SELECT name FROM sysobjects WHERE id = OBJECT_ID('sp_DropAllIndex')
AND OBJECTPROPERTY(OBJECT_ID('sp_DropAllIndex'),'IsProcedure')=1)
DROP PROCEDURE sp_DropAllIndex
GO
CREATE PROCEDURE sp_DropAllIndex
@tabname nvarchar(150) -- 需要删除统计或索引的表
AS
BEGIN
DECLARE @drop_idx_string nvarchar(4000) -- 存放动态组织而成的DROPS index/stats 语法
SET NOCOUNT ON
-- check table
IF NOT EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = 'base table' AND table_name = @tabname)
BEGIN
RAISERROR(N'------当前表:''%s'' 不存在!',16, 1, @tabname)
RETURN (1)
END
SET @tabname = OBJECT_ID(@tabname)
IF EXISTS (SELECT 1
FROM sysindexes
WHERE id=@tabname AND indid BETWEEN 1 AND 254
AND status IN (96,10485856,8388704))
BEGIN
SELECT @drop_idx_string = isnull(@drop_idx_string+';','')
+ ('DROP STATISTICS '+OBJECT_NAME(@tabname)+'.'+name)
FROM sysindexes
WHERE id=@tabname AND indid BETWEEN 1 AND 254
AND status IN (96,10485856,8388704)
END
IF Len(@drop_idx_string) > 0
BEGIN
PRINT N'------统计删除列表------'
PRINT @drop_idx_string+';'
EXECUTE(@drop_idx_string+';')
PRINT N'------统计删除结束------'
END
IF EXISTS (SELECT 1 FROM sysindexes
WHERE id=@tabname AND indid BETWEEN 1 AND 254
AND status NOT IN (96,10485856,8388704))
BEGIN
SET @drop_idx_string = NULL
select @drop_idx_string = isnull(@drop_idx_string+';'+CHAR(13)+CHAR(10),'')
+ ('DROP INDEX '+OBJECT_NAME(@tabname)+'.'+name)
FROM sysindexes
WHERE id=@tabname AND indid BETWEEN 1 AND 254
AND status NOT IN (96,10485856,8388704)
AND OBJECTPROPERTY (OBJECT_ID(name),'IsConstraint') IS NULL--过程不处理CONSTRAINTS
END
PRINT N'------索引删除列表------'
PRINT (@drop_idx_string+';')
EXEC( @drop_idx_string+';')
PRINT ('......'+CHAR(13)+CHAR(10)+'......')
PRINT N'------索引删除结束------'
END
GO
create clustered index idx_id on ta(id)
create index idx_col on ta(col)
go
sp_DropAllIndex 'ta'
/*
------索引删除列表------
DROP INDEX ta.idx_id;
DROP INDEX ta.idx_col;
......
......
------索引删除结束------
*/

时间: 2024-10-30 02:58:37

一个删除指定表的所有索引和统计的过程_mssql2005的相关文章

删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005 .

原文:删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005 . 删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005, 使用说明 : 1,先执行脚本,将存储过程创建在数据库中 2,调用方法,以黄金搭档数据库为例 use velcromfm --数据库名, 根据具体项目替换 go declare @tableName varchar(20) set @tableName='menu' --表名 ,根据实际情况替换e

生成指定表rebuild所有索引的语句

需要对表大数据量操作的时候,如delete,需要对索引可以选择性的操作!可以使用下面语句生 成: declare @tname varchar(100) declare @size int set @size=0     --这 里设置索引大小限制,如果不设置默认为0即所有索引 set @tname='tblorders' select  'alter index '+' '+c.indexname+' '+'on'+' '+@tname+' '+'rebuild with (data_comp

如何把已知表的一列原样加到一个新的表中

问题描述 asp.net中,我已经获取了一个DataTable,指定表变量为dt,例如:dt表内容idnamesex1小王男2小李女3小黑男我现在想得到一个新的DataTable:dtnew想取id列和name列dtnew表内容idname1小王2小李3小黑使用dtnew.Colums.Add(dt.Colums["id"]);是不行的,提示id列已经在另一个datatable中使用.那我改怎么做呢? 解决方案 解决方案二:先增加列,再循环增加这列的值.解决方案三:引用1楼pj100的

Python删除指定目录下过期文件的2个脚本分享_python

脚本1: 这两天用python写了一个删除指定目录下过期时间的脚本.也可能是我初学python,对python还不够熟习,总觉得这个脚本用shell写应该更简单也更容易些.就功能上来说,该脚本已经实现了我想要的效果,不过该脚本还不够通用性,还有更多可以完善的地方.目前该脚本在python2.4下运行良好.同时,我在脚本中加入了对python版本的判断,理论上2.7下也应该可以正常使用.有环境的朋友可以帮忙测试一下.该脚本不完善的地方在于,只能支持一级目录下的文件删除,还不支持目录递归.同时过期文

Sql server复制表结构到一个指定表

问:请问专家,如何复制其它表的结构到一指定的表中去,比如以下的例子: 有如下三个表: 表A:字段1, 字段2, 字段3 表B:字段1, 字段2, 字段3 表C:字段1, 字段2, 字段3 现在想复制A表的字段1,B表的字段2,C表的字段3到表4中去.不需要表中的数据. 用SQL语句应如何实现呢? 答:其实,这里需要考虑一个问题,所到的指定表是不是空表?所以,我们有以下两种情况分别说说: /*table4不存在时*/ select a.col1, b.col2, c.col3 into table

Windows 7中如何快速删除指定注册表键值?

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   Windows7 RTM 7600出现噪音杂音解决方法 问题描述:电脑Lenovo家悦2240,1G内存,我装的是windows7 RTM7600,显卡 NVIDIA GeForce7100,声卡high definition audio device ,为什么经常出现噪音杂音啊,特别是听着歌,在浏览网页的时候特别明显,吱吱啦啦的,恳求各位高手指点! 解决办法:

mysql批量删除指定前缀的表,批量修改表名的SQL语句

  Select CONCAT( 'drop table ', table_name, ';' )  FROM information_schema.tables  Where table_name LIKE 'uc_%';   注意: like 'uc_%' 其中 uc_是你需要替换的表前缀. 执行查询,会自动生成出 drop table table_name这样的SQL语句. 然后复制 drop语句 可以执行删除的操作了. 这么一来也可以安全的审核一下语句,避免误操作.. 顺便补充一下一个批

c++-编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串。

问题描述 编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串. 编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串.例如,输入"jiangsu123"和删除位置5,则输出"jiansu123". 解决方案 #include <iostream> #include <string> using namespace std; int main() { char s1[100];

link环境下如何随机删除指定数量的数据,精简出一个随机数据来?

问题描述 link环境下如何随机删除指定数量的数据,精简出一个随机数据来? link环境下如何随机删除指定数量的数据,精简出一个随机数据来?