批量删除Sql Server对象(表,存储过程,触发器)

先在系统表中找到要处理的表名或者是存储过程的名字,在用游标对其进行处理

PS:SqlServer 2000使用的是系统表是sysobjects,类型字段是:xtype; SqlServer 2005以上版本的系统表是Sys.Objects,类型字段是Type

本文中以Sql2005为例,Sql2000版本请自行按照上述说明进行替换

注意  sys.objects 中type的值不同 删除命令是不同的

如删除存储过程用drop PROCEDURE PROCEDURENAME 删除表用 drop table  tablename 删除触发器用Drop Trigger TriggerName

sys.objects.type的值表示的意思如下表:
C:检查约束。
D:默认的约束
F:外键约束
L:日志
P:存储过程
PK:主键约束
RF:复制过滤存储过程
S:系统表格
TR:触发器
U:用于表格。
UQ:独特的约束。

批量处理的代码如下:
DECLARE cursorname cursor for select ‘drop PROCEDURE  ‘+name from sys.objects where name like ‘xx%‘ and xtype = ‘p‘ --删除对应的存储过程
DECLARE cursorname cursor for select ‘drop Trigger‘+name from sys.objects where name like ‘xx%‘ and xtype = ‘tr‘ --删除对应的触发器

open cursorname
declare @curname sysname
fetch next from cursorname into @curname
while(@@fetch_status=0)
  begin
 exec(@curname)
fetch next from cursorname into @curname
end
close cursorname
deallocate cursorname

时间: 2024-10-08 07:14:48

批量删除Sql Server对象(表,存储过程,触发器)的相关文章

批量删除Sql Server数据表

最近做数据转移,由于误操作,在系统表master表里创建了N多表   实在是没法删 找到以下方法共享一下 --指定要删除的数据库中的表 use master go declare @sql varchar(8000),@TableName varchar(100) begin declare cur cursor for select Name from sysobjects where xtype='p' and crdate>='2015-03-31 10:33:14.663' open c

SQL Server系统表sysobjects介绍与使用

原文:SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工. 这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表 在数据库内创建的每个对象(约

Sql Server 常用系统存储过程大全

-- 来源于网络 -- 更详细的介结参考联机帮助文档 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_loginconfig --*报告SQL Server 实例在Windows 上运行时的登录安全配置 xp_logininfo --*返回有关Windows 认证登录的信息. xp_msver --*返回有关Microsoft SQL Server 的版本信息 xp_enumgroups    --返回Wi

SQL Server系统表sysobjects介绍与使用(转)

SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工. 这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表  在数据库内创建的每个对象(约束.

SQL Server事物的存储过程

在酒店管理系统开发中,我们会创建房间表和房间类型表(房型表)这两个表,如下图所示: 房型表:RoomType 房间表:Room 首先这两个表的关系:Room是从表,RoomType是主表,两表有主外键关系,RoomType.rTypeId=Room.rTypeId 分析这两个表,我们会发现这样一个问题:在房间表和房型表管理中,当我们修改或者删除一个RoomType表,对应的Room表我们也要做修改和删除,那么我们怎么解决这个问题呢?首先可以在数据库中设置级联删除,或者利用触发器也可以解决...这

向SQL Server 现有表中添加新列并添加描述.

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) 代码 /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' *********

SQL Server基础之<存储过程>

  简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理.本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作. 一:存储过程概述  SQL Server中的存储过程是使用T_SQL编写的代码段.它的目的在于能够方便的从系统表中查询信息,或者完成与更新数据库表相关的管理任务和其他的系统管理任务.T_SQL语句是SQL Server数据库与应用程序之间的编程接口.在很多情况下,一些代码会被开发者重复编写多次,如果每次都编写相同功能

SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨

SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译(recompile)的条件:     - 对查询所引用的表或视图进行更改(ALTER TABLE 和 ALTER VIEW).     - 对执行计划所使用的任何索引进行更改.     - 对执行计划所使用的统计信息进行更新,这些更新可能是从语句(如 UPDATE STA

最简单删除SQL Server中所有数据的方法

原文:最简单删除SQL Server中所有数据的方法  最简单删除SQL Server中所有数据的方法 编写人:CC阿爸 2014-3-14 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程. 也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,