日期:2014-05-18  浏览次数:20413 次

SQL2005 如何一次性删除数据库中的表?
1.新建数据库
  CREATE DATABASE WORK
2.假设应该数据库中有多个用户表

现在想一次性删除该数据库中所有用户表

考虑过语句
DELETE FROM WORK.dbo.sysobjects where xtype='U';

但SQL2005默认是不支持上述操作!

语句运行报错如下:
不允许对系统目录进行即席更新。

GOOGLE后的
SQL 2005中有一个“允许对系统目录直接进行修改”的选项

请教大师们,如何设置呢?


也试过
sp_configure 'allow updates', 1;

RECONFIGURE WITH OVERRIDE;

但错误依旧

------解决方案--------------------
SQL code

CREATE PROCEDURE sp_drop_all_fk    
as  
declare @sql varchar(255)   
declare dropsql_cursor cursor for    
select 'alter table '+object_name(fkeyid)+' drop constraint '+object_name(constid)+char(10) from sysreferences   
  
open dropsql_cursor   
  
fetch dropsql_cursor into @sql   
  
begin tran   
  
while @@fetch_status=0   
begin  
       
    execute(@sql)   
       
    if @@error <> 0   
    begin  
        rollback  
        return  
    end  
  
    fetch dropsql_cursor into @sql   
  
end  
deallocate dropsql_cursor   
  
commit  
GO  


exec sp_drop_all_fk   -- 执行存储过程

2、删除表

declare @table varchar(400)

while (select count(*) from sysobjects where type='u')>=1
 begin 
  set @table=(select top 1 name from sysobjects where type='u')
  set @table='drop table '+@table
  exec(@table)
 end

select  name,type from sysobjects where type='u'


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/js_szy/archive/2009/08/29/4496010.aspx

------解决方案--------------------
SQL code
sp_MSforeachtable @command1 = "TRUNCATE TABLE ?"