删除数据库中所有的用户数据表和内容的方法[MS sql server 2005/2000/2008]

时间:2024-03-10 20:17:32

在实际工作中, 很有可能出现需要删除一个数据库内所有的用户数据表和内容的问题, 比如说, 你用的是虚拟主机, 需要把之前安装的数据库内用户表和内容全部删除, 并用来安装新的数据库表和内容, 而由于空间商的限制, 你又只能通过以远程连接的方式来管理数据库, 如果要达到如前要求那种需求, 你的解决方案就不能是新建另一个数据库了事.而目前存在的已有数据表数以百计, 你一个一个地删除会删到崩溃的, 只有从SQL语句来进行删除, 下面就以sql server 2005的数据库dbname为例进行说明. 首先选择要操作的数据库, 这一步很简单从略, 然后打开SQL命令行, 输入SQL 命令,

具体的语法如下:

 declare @tablename nvarchar(100)
SELECT [name] into #tablename FROM sysobjects WHERE type = \'U\';
while(select count(1) from #tablename)>0
begin
select top 1 @tablename=[name] from #tablename;
exec(\'drop table \'+@tablename);
delete from #tablename where [name]=@tablename;
end

然后你就会发现, 整个数据库内的表已经被删除了.

以下是整个过程的注解:

declare @tablename nvarchar(100)   --变量@tablename保存表名
SELECT [name] into #tablename FROM sysobjects WHERE type = \'U\';  --将用户表全部保存到临时表#tablename中
while(select count(1) from #tablename)>0  --当#tablename有数据时
begin    --从#tablename中取第一条
select top 1 @tablename=[name] from #tablename; --进行表删除操作,表名为变量,所以此处用到动态sql
exec(\'drop table \'+@tablename);  --将此表名记录从#tablename中删除
delete from #tablename where [name]=@tablename;  --最后删除临时表#tablename
end    --结束

 

参考资料: http://www.111cn.net/database/mssqlserver/48639.htm