删除数据库的所有存储过程、主键、外键、索引等

-- 删除存储过程
DECLARE   @STRING   VARCHAR ( 8000 )
WHILE   EXISTS ( SELECT  NAME  FROM  SYSOBJECTS  WHERE  TYPE = ' P '   AND  STATUS >= 0 )
BEGIN
 
SELECT   @STRING = ' DROP  PROCEDURE  ' + NAME   FROM    SYSOBJECTS     WHERE    TYPE  =   ' P '   AND  STATUS >= 0
 
-- SELECT @STRING
  EXEC ( @STRING )
END

GO

-- 默认值或 DEFAULT 约束
DECLARE   @STRING   VARCHAR ( 8000 )
WHILE   EXISTS ( SELECT  NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' D ' )
BEGIN
 
SELECT   @STRING = ' ALTER TABLE  ' + B.NAME + '  DROP CONSTRAINT  ' + A.NAME
  
FROM  ( SELECT  PARENT_OBJ,NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' D ' ) A,
        (
SELECT  ID,NAME  FROM  SYSOBJECTS  WHERE   OBJECTPROPERTY (ID, N ' ISUSERTABLE ' =   1 ) B
    
WHERE  A.PARENT_OBJ = B.ID
 
EXEC ( @STRING )
END

GO

-- UNIQUE 约束
DECLARE   @STRING   VARCHAR ( 8000 )
WHILE   EXISTS ( SELECT  NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' UQ ' )
BEGIN
 
SELECT   @STRING = ' ALTER TABLE  ' + B.NAME + '  DROP CONSTRAINT  ' + A.NAME
  
FROM  ( SELECT  PARENT_OBJ,NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' UQ ' ) A,
        (
SELECT  ID,NAME  FROM  SYSOBJECTS  WHERE   OBJECTPROPERTY (ID, N ' ISUSERTABLE ' =   1 ) B
    
WHERE  A.PARENT_OBJ = B.ID
 
EXEC ( @STRING )
END

GO

-- FOREIGN KEY 约束
DECLARE   @STRING   VARCHAR ( 8000 )
WHILE   EXISTS ( SELECT  NAME  FROM  SYSOBJECTS  WHERE  TYPE = ' F ' )
BEGIN
 
SELECT   @STRING = ' ALTER TABLE  ' + B.NAME + '  DROP CONSTRAINT  ' + A.NAME
  
FROM  ( SELECT  PARENT_OBJ,NAME  FROM  SYSOBJECTS  WHERE  TYPE = ' F ' ) A,
        (
SELECT  ID,NAME  FROM  SYSOBJECTS  WHERE   OBJECTPROPERTY (ID, N ' ISUSERTABLE ' =   1 ) B
    
WHERE  A.PARENT_OBJ = B.ID
 
EXEC ( @STRING )
END

GO

-- PRIMARY KEY 约束
DECLARE   @STRING   VARCHAR ( 8000 )
WHILE   EXISTS ( SELECT  NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' PK ' )
BEGIN
 
SELECT   @STRING = ' ALTER TABLE  ' + B.NAME + '  DROP CONSTRAINT  ' + A.NAME
  
FROM  ( SELECT  PARENT_OBJ,NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' PK ' ) A,
        (
SELECT  ID,NAME  FROM  SYSOBJECTS  WHERE   OBJECTPROPERTY (ID, N ' ISUSERTABLE ' =   1 ) B
    
WHERE  A.PARENT_OBJ = B.ID
 
EXEC ( @STRING )
END

GO

-- 触发器
DECLARE   @STRING   VARCHAR ( 8000 )
WHILE   EXISTS ( SELECT  NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' TR ' )
BEGIN
 
SELECT   @STRING = ' DROP TRIGGER  ' + NAME  FROM  SYSOBJECTS  WHERE  XTYPE = ' TR '
 
EXEC ( @STRING )
END

GO

 

-- 索引
declare   @string   varchar ( 8000 )
while   exists (
 
select  TABLE_NAME =  o.name,INDEX_NAME =  x.name 
  
from  sysobjects o, sysindexes x, syscolumns c, sysindexkeys xk
  
where  o.type  in  ( ' U '
  
and   convert ( bit ,(x.status  &   0x800 ) / 0x800 ) = 0
  
and  x.id  =  o.id
  
and  o.id  =  c.id
  
and  o.id  =  xk.id
  
and  x.indid  =  xk.indid
  
and  c.colid  =  xk.colid
  
and  xk.keyno  <=  x.keycnt
  
and   permissions (o.id, c.name)  <>   0
  
and      (x.status & 32 =   0    --  No hypothetical indexes
   group   by  o.name,x.name)
begin
select   top   1   @string = ' drop index  ' + o.name + ' . ' +  x.name 
  
from  sysobjects o, sysindexes x, syscolumns c, sysindexkeys xk
  
where  o.type  in  ( ' U '
  
and   convert ( bit ,(x.status  &   0x800 ) / 0x800 ) = 0
  
and  x.id  =  o.id
  
and  o.id  =  c.id
  
and  o.id  =  xk.id
  
and  x.indid  =  xk.indid
  
and  c.colid  =  xk.colid
  
and  xk.keyno  <=  x.keycnt
  
and   permissions (o.id, c.name)  <>   0
  
and      (x.status & 32 =   0    --  No hypothetical indexes
   group   by  o.name,x.name
exec ( @string )
end

 

GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值