内容显示页
 
类别:数据库+SQL | 浏览(2371) | 2008-8-20 16:25:58

 

--删除指定数据库里的所有用户表

USE DATABASENAME
--DATABASENAME 是待清理的数据库

GO

DECLARE @au_lname VARCHAR(40),@SQLString NVARCHAR(500)

DECLARE tb CURSOR FOR
SELECT name FROM sysobjects WHERE xtype='U'

OPEN tb

-- Perform the FIRST FETCH.
FETCH NEXT FROM tb INTO @au_lname

-- CHECK @@FETCH_STATUS TO see IF there ARE ANY more ROWS TO FETCH.
WHILE @@FETCH_STATUS = 0
BEGIN
-- This IS executed AS long AS the previous FETCH succeeds.
FETCH NEXT FROM tb INTO @au_lname

SET @SQLString='DROP TABLE '+ @au_lname
EXEC sp_executesql @SQLString
--DROP TABLE @au_lname


END

CLOSE tb
DEALLOCATE tb

GO

 


引用本页地址:http://www.yongfa365.com/item/SQL-Drop-All-User-Table.html
 
 
相关链接
 
网友评论:
1 gulunhua - 2009-2-3 16:04:38
呵呵,祝贺你啊,新婚愉快!

我运行了你写的sql脚本,发现有点问题
我觉得应该把:
-- This IS executed AS long AS the previous FETCH succeeds.
FETCH NEXT FROM tb INTO @au_lname
放到:
END之前
 
2 cyrus - 2010-2-1 16:25:07
发现一个BUG,在MS sql2005下面,如果指定的数据库是Master,会把系统表给删掉.
加个限制条件稳妥一些。
SELECT name FROM sysobjects WHERE xtype='U' and category =2

呵呵!
 
3 匿名网友 - 2010-2-1 16:28:34
错了,普通表应该是
SELECT name FROM sysobjects WHERE xtype='U' and category =0
 
4 匿名网友 - 2010-2-1 16:37:32
呵呵,可以自己限制一下,把那些系统表名弄出来,不删这些表
 
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片 看不清? 换张图试试
 
     
 
 
文章分类
 
 
.Net + C#(73)
 
 
ASP+VBS(161)
 
 
 
Linux(10)
 
 
 
web 2.0(26)
 
 
 
 
 
心程(68)
 
生活(97)
 
 
     

Power by :柳永法(yongfa365)'Blog  | 京ICP备07011491号  QQ:64049027  E-mail:64049027@qq.com yongfa365'CodePlex yongfa365'CodeGoogle

申请友情链接 要求:跟本站主题相类似正规网站,双方交换为首页位置

转载请注明来源,以便后人及时得到最新、修正、加强版!!!