删除所有约束、表、视图等SQL脚本

--删除所有约束、表、视图等SQL脚本
--###############################################
--删除所有外键约束
--###############################################
DECLARE @SQL VARCHAR(99)
DECLARE CUR_CONSTRAINT CURSOR LOCAL FOR
SELECT
‘ALTER TABLE ‘+
CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+‘.‘ FROM sys.schemas WHERE schema_id = O.schema_id) ELSE ‘‘ END
+OBJECT_NAME(parent_object_id)+‘ DROP CONSTRAINT ‘+OBJECT_NAME(object_id)
FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
WHERE O.type IN(‘C‘,‘D‘,‘F‘)
OPEN CUR_CONSTRAINT
FETCH CUR_CONSTRAINT INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_CONSTRAINT INTO @SQL
END
CLOSE CUR_CONSTRAINT
DEALLOCATE CUR_CONSTRAINT
--###############################################
--删除所有视图(存储过程、函数等用同样的方法)
--###############################################
DECLARE @SQL VARCHAR(99)
DECLARE CUR_VIEW CURSOR LOCAL FOR
SELECT
‘IF OBJECT_ID(‘‘‘+
CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+‘.‘ FROM sys.schemas WHERE schema_id = O.schema_id) ELSE ‘‘ END
+OBJECT_NAME(object_id)
+‘‘‘) IS NOT NULL‘+
+‘ DROP VIEW ‘+
CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+‘.‘ FROM sys.schemas WHERE schema_id = O.schema_id) ELSE ‘‘ END
+OBJECT_NAME(object_id)
FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
WHERE O.type IN(‘V‘)
OPEN CUR_VIEW
FETCH CUR_VIEW INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_VIEW INTO @SQL
END
CLOSE CUR_VIEW
DEALLOCATE CUR_VIEW
--###############################################
-- 删除所有表
--###############################################
DECLARE @SQL VARCHAR(99)
DECLARE CUR_TABLE CURSOR LOCAL FOR
SELECT
‘DROP TABLE ‘+
CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+‘.‘ FROM sys.schemas WHERE schema_id = O.schema_id) ELSE ‘‘ END
+O.name
FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
WHERE O.type=‘U‘
OPEN CUR_TABLE
FETCH CUR_TABLE INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_TABLE INTO @SQL
END
CLOSE CUR_TABLE
DEALLOCATE CUR_TABLE
--###############################################
再提供一下SQL Server里的OBJECT_ID函数object_type参数类型
--###############################################
OBJECT_ID(object_name,object_type)
对象类型:
AF =聚合函数(CLR)
C = CHECK约束
D = DEFAULT(约束或独立)
F = FOREIGN KEY约束
FN = SQL标量函数
FS =大会(CLR)的标量函数
FT =程序集(CLR)表值函数
IF = SQL内联表值函数
IT =内部表
P = SQL存储过程
电脑大会(CLR)存储过程
PG =计划指南
PK = PRIMARY KEY约束
R =规则(旧式,单机)
RF =复制过滤过程
S =系统基表
SN =同义词
SQ =服务队列
TA =组件(CLR)DML触发器
TF = SQL表值函数
TR = SQL DML触发器
TT =表类型
U =表(用户定义)
UQ = UNIQUE约束
V =视图
X =扩展存储过程

  

原文地址:https://www.cnblogs.com/early-moon/p/8523864.html

时间: 2024-10-26 14:55:49

删除所有约束、表、视图等SQL脚本的相关文章

从一个简单的约束看规范性的SQL脚本对数据库运维的影响

原文:从一个简单的约束看规范性的SQL脚本对数据库运维的影响 之前提到了约束的一些特点,看起来也没什么大不了的问题,http://www.cnblogs.com/wy123/p/7350265.html以下以实际生产运维中遇到的一个问题来说明规范的重要性. 如下是一个简单的建表脚本,表面上看起来并没有什么问题.其中创建了3个约束,一个主键约束,一个唯一约束,一个默认值约束,该脚本执行起来没有任何问题. USE Test GO if exists(select 1 from sys.tables

MySQL外键及级联删除 && 表的存储引擎与创建索引 && 删除数据库和表

Messages表: mysql>create table Messages( ->message_id int auto_increment primary key, ->user_name varchar(50) not null, ->author_id int not null, ->body text, ->forum_id int not null); Forums表: mysql>create table Forums( ->forum_id

使用SQL脚本删除冗余的视图和表

使用SQL脚本删除冗余的视图和表 SQL脚本删除视图信息 USE DatabaseGOIF OBJECT_ID('ViewName')IS NOT NULLBEGINDROP VIEW ViewNameENDGO SQL脚本删除表信息 USE DatabaseGOIF  EXISTS (SELECT * FROM dbo.sysobjects WHERE ID =  OBJECT_ID(N'dbo.TableName') AND OBJECTPROPERTY (id,N'IsUserTable'

[转] 使用SQL脚本查看表空间使用率和使用dba_tablespace_usage_metrics视图的区别

传统的SQL脚本查看表空间使用率,使用的关键视DBA_DATA_FILE和DBA_FREE_SPACE.Oracle 11g引入了DBA_TABLESPACE_USAGE_METRICS视图.事实上,Oracle 10g中就已经引入了该视图,可以使用,但在10g官方文档中查不到,11g官方文档对该视图作了说明. Oracle 11g 官方文档中对DBA_TABLESPACE_USAGE_METRICS视图的说明: DBA_TABLESPACE_USAGE_METRICS describes ta

Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间

alter table userInfo add(msn varchar2(20));   1.建表 create table userInfo ( id number(6), name varchar2(20), sex number(1), age number(3), birthday date, address varchar2(50), email varchar2(25), tel number(11) );   2.创建约束 不带约束名称的: create table userIn

SQL Server 删除数据库所有表和所有存储过程

场景: SQL Server中,需要删除所有表或所有存储过程时,手动的方式只能逐个进行删除,耗个人时间,所以想弄个语句来实现这样的需求. 如果由于外键约束删除table失败,则先删除所有约束: --/第1步**********删除所有表的外键约束*************************/ 1 DECLARE c1 cursor for 2 select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+na

SQL脚本修改表结构

SQL脚本修改表结构 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default '默认值' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6] Decimal (12,4) default 0,[字段7] image null ,) 删除表:Drop table

sql server快速删除整个数据库表和存储过程

情况:在远程数据库删除表执行太慢,表过多,数据库无权删除 结果:保留空数据库 方法:利用sql语句,查询网络文摘解决. 说明: 有些有约束,不能直接delete,需要先删除所有约束,语句: DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype = 'F' open c1 declare

传入数据集,生成对应表的sql脚本

delphi的,传入数据集,生成他的sql脚本. //根据数据源结构创建ACCESS表1:生成脚本 Function CreateAccessTable(dSource:TDataSet; sTableName:String; sIgnoreFields:Array of String):String; Var SQL:TStringList; oField:TField; i, n:Integer; sF:String; Begin Result:=''; SQL:=TStringList.C