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

posted @ 2014-07-12 11:22  BloggerSb  阅读(572)  评论(0编辑  收藏  举报