sql server快速删除整个数据库表和存储过程 教你sql查询分析器执行存储过程
情况:在远程数据库删除表执行太慢,表过多,数据库无权删除
结果:保留空数据库
方法:利用sql语句,查询网络文摘解决.
说明:
有些有约束,不能直接delete,需要先删除所有约束,语句:
DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype = 'F' open c1 declare @c1 varchar(8000) fetch next from c1 into @c1 while(@@fetch_status=0) begin exec(@c1) fetch next from c1 into @c1 end close c1 deallocate c1
select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc;
该条语句执行之后会将数据库中所有的表都查询出来,复制出来之后执行truncate语句即可
删除数据库所有表,语句:
select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc; declare @tname varchar(8000) set @tname='' select @tname=@tname + Name + ',' from sysobjects where xtype='U' select @tname='drop table ' + left(@tname,len(@tname)-1) exec(@tname)
如果需要删除存储过程等只需要将上面的做如下修改就行了的where xtype='U' 改成 where xtype='P',drop table 改成 drop Procedure
删除数据库所有存储过程,语句:
select 'truncate Procedure ' + Name + ';' from sysobjects where xtype='P' order by name asc; declare @tname varchar(8000) set @tname='' select @tname=@tname + Name + ',' from sysobjects where xtype='P' select @tname='drop Procedure ' + left(@tname,len(@tname)-1) exec(@tname)
教你sql查询分析器执行存储过程
1.如果你的存储过程没有带输出参数
例如存储过程为
create procedure proc_test
@a int,
@b varchar(50)
as
begin
delete from 表名 where 字段 and 字段
end
想执行这个存储过程的话
exec 存储过程名称 参数(多个用逗号隔开)
示例 exec proc_test 2,'是'
2.如果你的存储过程有带输出参数
例如存储过程为
create procedure proc_test
@a int,
@b varchar(50) output
as
select @b=字段 from 表名 where 字段
想执行这个存储过程的话
exec 存储过程名称 参数(多个用逗号隔开,有output要加output)
示例 declare @b varchar(50)
exec proc_test 2,@b output
select @b
————————————————
原文链接:https://blog.csdn.net/free3people/article/details/50753934
此随笔或为自己所写、或为转载于网络。仅用于个人收集及备忘。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步