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

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

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

使用说明 :

1,先执行脚本,将存储过程创建在数据库中

2,调用方法,以黄金搭档数据库为例

use velcromfm --数据库名, 根据具体项目替换

go

declare @tableName varchar(20)
set @tableName='menu' --表名 ,根据实际情况替换
exec sp_dropindex @tableName

3,如有需要,该脚本稍加改写就可以做成一个删除数据库所有索引的脚本

提供一个思路 :

select * from sysobjects where xtype='u' --查除数据库里所有的表,使用游标遍历执行这个存储过程

4,该脚本有个问题,如果某个pk索引是另外一个表的外键的话就删不掉,但在velcro系统的数据库不会有这个麻烦,应为我们的系统没有设任何外键^-^

脚本如下

*/

----------------------------- 脚本---------------------------------------------------

if exists(select 1 from sysobjects where id = object_id('sp_dropindex') and xtype = 'P')
drop procedure sp_dropindex
go

create procedure sp_dropindex @tableName varchar(50)=null --表名
as

if @tableName is null
begin
 raiserror('必须提供@tableName参数',12,1)
 return
end

create table # (
 id int identity,
 index_name varchar(50),
 index_description varchar(1000),
 index_keys varchar(100)
)

insert #(index_name,index_description,index_keys)
exec sp_helpindex @tableName

declare @i int
declare @sql varchar(100)
 
set @i = 1

while @i<=(select max(id) from #)
begin
 if exists(select 1 from sysobjects A join # B on A.name=B.index_name where B.id=@i and A.xtype in ('PK','UQ'))
 begin
  select @sql = 'alter table '+ @tableName +' drop constraint ' + (select index_name from # where id = @i)
 end
 else
 begin
  select @sql = 'drop index '+ @tableName + '.' + (select index_name from # where id=@i)
 end
 
-- print(@sql)
    exec(@sql) 
 set @i=@i+1
end

drop table #

go

时间: 2024-10-25 15:29:42

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

Oracle技术:基于主键和唯一约束的显示索引控制

从Oracle9i开始,主键创建时的索引和唯一性约束可以在建表时独立定义. 随后,约束可以被独立drop,而索引可以保留.这是Oracle9i中对于索引增强的几个特性之一. SQL> CREATE TABLE employees 2  ( 3    empno NUMBER(6), 4    NAME VARCHAR2(30), 5    dept_no NUMBER(2), 6    CONSTRAINT emp_pk PRIMARY KEY(empno) 7      USING INDEX

通过 SQL Server 2005 索引视图提高性能

本文介绍了 SQL Server 2005 Enterprise Edition 中经过改进的索引视图功能.文中对索引视图进行了说明介绍,并讨论了可通过该功能改善性能的一些具体情况 一.索引视图 多年以来,Microsoft SQL Server 一直支持创建称为视图的虚拟表.通常,这些视图的主要作用是: • 提供一种安全机制,将用户限制到一个或多个基表的某个数据子集中. • 提供一种机制,允许开发人员自定义用户通过逻辑方式查看存储在基表中的数据的方式. 通过 SQL Server 2000,S

SQLServer主键和唯一约束的区别_MsSql

首先说明一点,主键又称主键约束,它也是一种约束,看下它和唯一约束的创建语法: alter table Person add constraint PK_Id primary key (Id) alter table Person add constraint UQ_Name unique (Name) 主键和唯一约束都要求字段值唯一,除此外,它们还有如下区别: ·同一张表只能有一个主键,但能有多个唯一约束: ·主键字段值不能为NULL,唯一约束字段值可以为NULL: ·主键字段可以做为其他表的外

SQLServer主键和唯一约束的区别

首先说明一点,主键又称主键约束,它也是一种约束,看下它和唯一约束的创建语法: alter table Person add constraint PK_Id primary key (Id) alter table Person add constraint UQ_Name unique (Name) 主键和唯一约束都要求字段值唯一,除此外,它们还有如下区别: ·同一张表只能有一个主键,但能有多个唯一约束: ·主键字段值不能为NULL,唯一约束字段值可以为NULL: ·主键字段可以做为其他表的外

用SQL Server 2005索引视图提高性能一

一.索引视图 多年以来,MicrosoftSQL Server一直支持创建称为视图的虚拟表.通常,这些视图的主要作用是: 提供一种安全机制,将用户限制到一个或多个基表的某个数据子集中. 提供一种机制,允许开发人员自定义用户通过逻辑方式查看存储在基表中的数据的方式. 通过 SQL Server 2000,SQL Server 视图的功能得到了扩展,实现了系统性能方面的收益.可在视图上创建唯一的聚集索引及非聚集索引,来提高最复杂的查询的数据访问性能.在 SQL Server 2000 和 2005

SQL SERVER 2005删除维护作业报错:The DELETE statement conflicted with the REFERENCE constraint &quot;FK_subplan_job_id&quot;

案例环境:     数据库版本: Microsoft SQL Server 2005 (Microsoft SQL Server 2005 - 9.00.5000.00 (X64) ) 案例介绍:     对一个数据库实例做清理工作时,发现有一个很久之前禁用的数据库维护作业,于是遂删除该作业,但是删除该作业时,遇到如下错误:     脚本删除操作: USE [msdb] GO EXEC msdb.dbo.sp_delete_job @job_id=N'876ab683-6d81-47c4-bba

一个删除指定表的所有索引和统计的过程_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

SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句

原文:SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句 BEGIN WITH tx AS ( SELECT a.object_id ,b.name AS schema_name ,a.name AS table_name ,c.name as ix_name ,c.is_unique AS ix_unique ,c.type_desc AS ix_type_desc ,d.index_column_id ,d.is_included_column ,e.name AS co

FAQ系列 | MySQL索引之主键索引

导读 在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别? 上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别. 1.主键索引 主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录.一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL. 在MySQL中,InnoDB数据表的主键设计我们通常遵循几个原则: 采用一个没有业务用途的自增属性列作为主键: 主键字段值总是不更新,只有新增或者