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

存储过程|数据|数据库|索引

--删除存储过程
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

时间: 2024-09-30 13:22:00

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

cvs 数据库 主键外键-CVS格式文件数据导入新数据库后自动生成主键外键

问题描述 CVS格式文件数据导入新数据库后自动生成主键外键 以前将数据库中的数据导出来了,后来手贱把给数据库毁了. 现在希望通过以前导出来的CVS文件数据恢复以前的数据库,最好是自动的,主键外键自动关联自动生成[里边表实在太多了]. 什么数据库都行,什么MySQL.SQLServer都可以,只求能重建以前的数据库啊! 不知道各位大神有没有可行的办法啊? 解决方案 没办法,只有数据.需要添加SQL语句

查询表主键外键信息的SQL

我的BSOOC里需要一个查询表主键外键信息的SQL,昨晚研究到凌晨1点,终于能实现这个目标:Oracle:select o.obj# as objectId, o.name AS tableName, oc.name AS constraintName,       decode(c.type#, 1, 'C', 2, 'P', 3, 'U',              4, 'R', 5, 'V', 6, 'O', 7,'C', '?') as constraintType,        c

entity删除实体时,如何置空外键。

问题描述 例如商品分类和商品明细.当删除商品分类时,如何将商品明细对应商品分类的的外键置空?在sqlServer里,可以手动设置为删除时置空,但如此操作太麻烦,能否在model实体中加标记或者在context中加代码实现? 解决方案 解决方案二:外键的属性中就有主表删除时,子表外键置空的选项,不知道楼主说的手动是什么意思解决方案三:楼主说的那个属性是在sqlServer里设置的吧,这个我知道.能不能在entity里直接配置这个.我记得以前看到entity介绍时提到过,设置为可空的外键时,删除实体

如何获取SqlServer2005表结构(字段,主键,外键,递增,描述)_Mysql

1.获取表的基本字段属性 复制代码 代码如下: --获取SqlServer中表结构 SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('你的表名') 运行效果 2.如果还想要获取字段的描述

MySQL 创建主键,外键和复合主键的语句_Mysql

1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名); 2.创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ; 3.使用组合主键 如果一列不能唯一区分一个表里的记录时,可以考虑多个

如何区分SQL数据库中的主键与外键_MsSql

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

如何区分SQL数据库中的主键与外键

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

生产库故障分析(主外键和DML性能分析)

原创 转载请注明出处 (我的学习笔记)    公司生产库2009年06月18日,出现批处理(JOB)阻塞了大量的用户操作,具体表现就是大量的表备锁做,并且CPU资源消耗达到了60%,让整个系统变慢,此时间长达30分钟. 出现问题后,我首先查看了系统使用有大事物的存在: select username,opname, round(((totalwork-sofar)/totalwork),4)*100 "pct_remaining" from V$session_Longops WHER

MySQL数据库开发中的外键与参照完整性

mysql|数据|数据库     参照完整性(Referential integrity)是数据库设计中一个重要的概念.在系统不同的列表中,当数据库所有参照合法或非合法关联时都会涉及到参照完整性.当参照完整性存在时,任何与不存在记录的关联将变得无效化,由此可防止用户出现各种错误,从而提供更为准确和实用的数据库. 参照完整性通常通过外键(foreign key)的使用而被广泛应用.长久以来,流行工具开源RDBMS MySQL并没有支持外键,原因是这种支持将会降低RDBMS的速度和性能.然而,由于很