zoukankan      html  css  js  c++  java
  • 删除所有的表,视图,存储过程等

    --!!!!!!!!!!!!!!!!!!!!!

    --!!!!!!!!慎用!!!!!!!!!

    --!!!!!!!!!!!!!!!!!!!!!

    --删除sql server中所有的表视图存储过程函数

    --删除存储过程

    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

    fromsysobjects o, sysindexes x, syscolumns c, sysindexkeysxk

    whereo.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

    andx.indid = xk.indid

    andc.colid = xk.colid

    andxk.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

    fromsysobjects o, sysindexes x, syscolumns c, sysindexkeysxk

    whereo.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

    andx.indid = xk.indid

    andc.colid = xk.colid

    andxk.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

    --删除所有视图

    declare   @sql2   varchar(8000)

    set   @sql2= ''

    select   @sql2=@sql2+ ', '+name   from   sysobjects

    where   type= 'V '   and   name   not   in( 'syssegments ',   'sysconstraints ')

    set   @sql2= 'drop   view   '+stuff(@sql2,   1,   1,   ' ')

    exec(@sql2)

    GO

    --删除所有表

    --*****************************************************************************

    -- @作者:  qwu;

    -- @用途:  删除数据库所有用户表;

    -- @版本:  v1.0

    -- @创建日期:  2011-3-23;

    -- @用法:  设置use [数据库名],

    -- @注意:  !!!!!!!!慎用!!!!!!!!!;

    -- @修改历史: 

    --   2011-3-23 qwu创建;

    --*****************************************************************************

    --!!!!!!!!!!!!!!!!!!!!!

    --!!!!!!!!慎用!!!!!!!!!

    --!!!!!!!!!!!!!!!!!!!!!

    --BEGIN--

    --BEGIN TRAN

    --use [数据库名]

    --删除外键约束

    DECLARE c1 cursor for

    select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; '

    fromsysobjects

    wherextype = 'F'

    open c1

    declare @c1 varchar(8000)

    fetch next from c1 into @c1

    while(@@fetch_status=0)

    begin

    exec(@c1)

    fetch next from c1 into @c1

    end

    close c1

    deallocate c1

    --删除所有用户表

    declare @sqlvarchar(8000)

    while (select count(*) from sysobjects where type='U')>0

    begin

    SELECT @sql='drop table ' + name

    FROM sysobjects

    WHERE (type = 'U')

    ORDER BY 'drop table ' + name

    exec(@sql)

    end

    --ROLLBACK

    --END--

  • 相关阅读:
    Enterprise Library3.1 使用数据访问模块时,调用Microsoft.Practices.EnterpriseLibrary.Data报出源文件与当前应用程序不一致和创建dataconfiguration的配置节处理程序出错
    net精华:C#中对注册表的操作
    [翻译]使用Enterprise Library 3.0的日志程序块
    分布式应用程序概述
    调整Oracle数据库print_bill表字段BillMKID的顺序,并判断表print_bill是否存在及字段billMKID是否存在
    Win32下注册COM组件后对注册表产生的变动
    vc 字符串与指针
    SQL Server不允许进行远程连接的解决办法
    vc上字符串,CString ,string,char数组&char指针
    如何用Visual C#来创建、修改注册信息
  • 原文地址:https://www.cnblogs.com/liubo68/p/2834152.html
Copyright © 2011-2022 走看看