zoukankan      html  css  js  c++  java
  • 删除数据库的所有存储过程、主键、外键、索引等

    --删除存储过程
    DECLARE @STRING VARCHAR(8000)
    WHILE EXISTS(SELECT NAME FROM SYSOBJECTS WHERE TYPE='P' AND STATUS>=0)
    BEGIN
    SELECT TOP 1 @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 top 1 @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 top 1 @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 top 1 @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 top 1 @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 top 1 @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

  • 相关阅读:
    PAT 1006 Sign In and Sign Out
    PAT 1004. Counting Leaves
    JavaEE开发环境安装
    NoSql数据库探讨
    maven的配置
    VMWARE 下使用 32位 Ubuntu Linux ,不能给它分配超过3.5G 内存?
    XCODE 4.3 WITH NO GCC?
    在苹果虚拟机上跑 ROR —— Ruby on Rails On Vmware OSX 10.7.3
    推荐一首让人疯狂的好歌《Pumped Up Kicks》。好吧,顺便测下博客园可以写点无关技术的帖子吗?
    RUBY元编程学习之”编写你的第一种领域专属语言“
  • 原文地址:https://www.cnblogs.com/0000/p/1600981.html
Copyright © 2011-2022 走看看