您的位置:首页 > 数据库

SQL Server批量删除表,视图,存储过程等数据库元素

2012-07-09 14:01 239 查看
--第一步,读取所有视图
select identity(int,1,1) flag,[name] names into #tmp
from sysobjects where crdate>'2012-07-09'

-- 执行上一步之后再执行下面:
--第二步循环删除
declare @tb varchar(1000) ,@a int,@b int,@sql varchar(8000)
select @a=min(flag),@b=max(flag) from #tmp
while @a<=@b
begin
select @tb=names from #tmp where flag=@a
set @sql='drop function '+@tb
exec(@sql)
set @a=@a+1
end
--最后别忘记删除临时表
DROP TABLE #tmp
select *   from sysobjects
where crdate>'2012-07-09'


根据需要删除的内容过滤 和更改 第12行代码

sysobjects

  系统对象表。 保存当前数据库的对象,如约束、默认值、日志、规则、存储过程等

  sysobjects 重要字段解释:

  sysObjects (

  Name sysname, --object 名称

  id int, --object id

  xtype char(2), -- object 类型

  type char(2), -- Object 类型(与xtype 似乎一模一样? 有点郁闷…)

  uid smallint, -- object 所有者的ID

  ... --其他的字段不常用到。

  )

  注:需要解释的是 xtype 和type 是一模一样的,他的数据为:

  C = CHECK 约束

  D = 默认值或 DEFAULT 约束

  F = FOREIGN KEY 约束

  FN = 标量函数

  IF = 内嵌表函数

  K = PRIMARY KEY 或 UNIQUE 约束

  L = 日志

  P = 存储过程

  R = 规则

  RF = 复制筛选存储过程

  S = 系统表

  TF = 表函数

  TR = 触发器

  U = 用户表

  V = 视图

 X = 扩展存储过程

  该表中包含该数据库中的所有对象,如有那些表 存储过程 视图 等信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: