有没有一种简单的方法可以删除数据库中的多个表,而无需删除数据库并重新创建它?在本例中,我们需要删除 100 多个表。
我很高兴删除全部用户表并重新导入所需的数据但不能触及任何数据库安全设置。
答案1
在对象资源管理器中,导航到您感兴趣的数据库。展开它并单击表文件夹。按 F7 调出对象资源管理器详细信息。选择要删除的表并按删除键。
答案2
有什么理由不直接在 T-SQL 中执行此操作(使用DROP TABLE
)?然后只需创建适当的 SQL 脚本(如果您有需要删除的表的列表,则很可能会自动生成该脚本)即可。
答案3
Tsql 回答如建议。我无法让删除表在 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
答案4
您可以通过迭代并执行以下命令来删除多个表:
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,则在第一次运行时,在删除 Table2 时不能删除 Table1,而在第二次运行时,由于 Table2 不再存在,因此可以删除 Table1)。