一条SQL删除所有用户自定义数据表,存储过程

 

有一天,本人在想把数据库重新清理一次,结果郁闷的是没有删除数据库的权限,就更别说新建了。愁。
与是我要写一条SQL删除所有用户自定义数据表,存储过程。
 
执行下面的查询语句,可以得到所有包含在sys.sysobjects视图里的数据
USE  AdventureWorks
SELECT   *
FROM  sys.sysobjects
GO
得出数据后,请注意名为type的列——这一列标明了对象的类型,也就是前面提到的24种。在这里,我用一个表格把它们列出来:
AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL stored procedure
PC = Assembly (CLR) stored procedure
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger
U = Table (user-defined)
UQ = UNIQUE constraint
V = View
X = Extended stored procedure
OK,我们要得到名称的表(用户自定义表)就是类型为“U”的对象;而sys.objects的类型为“S”。所以,为了达到我们的最终目的,SQL语句应该是——
USE  AdventureWorks
SELECT  name
FROM  sys.sysobjects
WHERE  type = ' U '
GO

 

删除表:

  1. --20081008 技术不高,但想出名 NAME:KYE 
  2. DECLARE @Tb_Name varchar(30)    --定义游标操作
  3. DECLARE staff_cursor CURSOR FOR
  4.     SELECT [name] FROM sys.sysobjects
  5.     WHERE type='U'  
  6. -- 打开游标
  7. OPEN staff_cursor 
  8. -- 提取记录数据
  9. FETCH Next FROM staff_cursor Into @Tb_Name
  10.     WHILE @@fetch_status = 0
  11.     BEGIN
  12.         EXEC('DROP TABLE '  + @Tb_Name )
  13.         PRINT @Tb_Name
  14.         FETCH Next FROM staff_cursor Into @Tb_Name
  15.     END
  16. CLOSE staff_cursor       -- 关闭游标
  17. DEALLOCATE staff_cursor  -- 释放游标资源

删除存储过程:

 

  1. --20081008 技术不高,但想出名 NAME:KYE 
  2. DECLARE @Sp_Name varchar(30)    --定义游标操作
  3. DECLARE @Tb_Count int
  4. SET @Tb_Count = 0
  5. DECLARE staff_cursor CURSOR FOR
  6.     SELECT [name] FROM sys.sysobjects
  7.     WHERE type='p' AND Category =0 --Category =0 表示
  8. -- 打开游标
  9. OPEN staff_cursor 
  10. -- 提取记录数据
  11. FETCH Next FROM staff_cursor Into @Sp_Name
  12.     PRINT '开始删除存储过程'
  13.     WHILE @@fetch_status = 0 
  14.     BEGIN
  15.         SET @Tb_Count = @Tb_Count + 1
  16.         EXEC('DROP PROCEDURE '  + @Sp_Name )
  17.         PRINT CONVERT(varchar(20),@Tb_Count) + ': ' + @Sp_Name
  18.         FETCH Next FROM staff_cursor Into @Sp_Name
  19.     END
  20.     print '总共删除' +   CONVERT(varchar(20),@Tb_Count) + '个存储过程'
  21. CLOSE staff_cursor       -- 关闭游标
  22. DEALLOCATE staff_cursor  -- 释放游标资源

以此类推吧。呵呵。也可删除函数什么的。呵呵。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值