Microsoft SQL Server Management Studio 2008删除多个用户表


12

有没有一种简单的方法可以删除数据库中的多个表而不删除数据库并重新创建它?在这种情况下,我们要删除100多个。

我很高兴删除所有用户表并重新导入所需的数据,但无法触及任何数据库安全设置。

Answers:


26

在对象资源管理器中,导航到您感兴趣的数据库。将其展开并单击“表”文件夹。按F7键以显示“对象资源管理器详细信息”。选择要删除的表,然后按Delete键。


约束呢?
西蒙(Simon)

2

有什么理由不直接在T-SQL(带有DROP TABLE)中这样做吗?然后,这只是创建适当的SQL脚本的一种情况(如果您有需要删除的表的列表,很可能会自动生成它)而您走了。


0

Tsql的答案如所建议。我无法使drop table在tsql中工作,但这确实成功了。

declare @TABLE varchar(250)

declare select_cursor cursor for
select name from sysobjects where type='U'

open select_cursor

fetch next from select_cursor
into @TABLE

while @@FETCH_STATUS = 0
begin
    print 'DROP TABLE '+@TABLE

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor

这假设没有foreign关键约束到位。
K. Brian Kelley,2009年

您可以更加费力地爬网依赖关系并按顺序删除表。<ahref= stackoverflow.com/ questions/ 352176/… >上的stackoverflow发布具有一些解决方案。
ConcernedOfTunbridgeWells,2009年

0

您可以通过遍历多个表并执行以下操作来删除多个表:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

但是,如果您尝试删除外键引用的表,则会出现类似以下的错误

Msg 3726, Level 16, State 1, Line 1
Could not drop object 'dbo.Table1' because it is referenced by a FOREIGN KEY constraint.

如果您只是想手动进行操作,则只需重复几次该语句,直到删除带有引用的表(例如,如果Table2具有对Table1的引用,则在第一次运行时不能删除Table1,而在删除Table2时不能删除它)由于不再有Table2,因此可以删除运行Table1)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.