首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除SQL Server数据库中的所有表?

如何删除SQL Server数据库中的所有表?
EN

Stack Overflow用户
提问于 2011-12-09 08:30:56
回答 16查看 362.1K关注 0票数 240

我正在尝试编写一个脚本,该脚本将完全清空SQL Server数据库。这就是我到目前为止所知道的:

代码语言:javascript
复制
USE [dbname]
GO
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
EXEC sp_msforeachtable 'DELETE ?'

当我在Management Studio中运行它时,我得到:

命令已成功完成。

但是当我刷新表格列表时,它们仍然存在。我做错了什么?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2011-12-09 08:53:24

当有多个外键表时,它也不适用于我。

我发现该代码可以正常工作,并且可以执行您尝试的所有操作(从数据库中删除所有表):

代码语言:javascript
复制
DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR

SET @Cursor = CURSOR FAST_FORWARD FOR
SELECT DISTINCT sql = 'ALTER TABLE [' + tc2.TABLE_SCHEMA + '].[' +  tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + '];'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME

OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql

WHILE (@@FETCH_STATUS = 0)
BEGIN
Exec sp_executesql @Sql
FETCH NEXT FROM @Cursor INTO @Sql
END

CLOSE @Cursor DEALLOCATE @Cursor
GO

EXEC sp_MSforeachtable 'DROP TABLE ?'
GO

你可以找到帖子的here。这是Groker的帖子。

票数 358
EN

Stack Overflow用户

发布于 2014-04-26 01:09:17

您还可以仅使用MSSMS UI工具(不使用SQL脚本)从数据库中删除所有表。有时这种方式可能会更舒服(特别是如果偶尔执行)

我按如下步骤一步一步地完成此操作:

在数据库树上选择[表] (Object Explorer)

  • Press F7可打开对象资源管理器详细信息视图)在此视图中选择必须删除的表(在本例中为所有表)

  • 继续按Delete键,直到删除所有表为止(由于键删除,您可以重复执行与错误次数相同的操作次数
票数 423
EN

Stack Overflow用户

发布于 2018-04-18 04:15:02

在SSMS中:

  • 右键单击数据库,然后在“选择对象”部分中单击“生成脚本”和“生成脚本”
  • ,在“设置脚本选项”部分中选择“为整个数据库和所有数据库对象编写脚本”

H19,在“脚本删除和创建”上单击“高级”按钮H210H111将“脚本创建”切换到“脚本删除”,然后按确定H212H113然后保存到文件、剪贴板或新的查询窗口。H214H115运行脚本。F217

现在,这将删除所有内容,包括数据库。确保删除您不希望删除的项的代码。或者,在“选择对象”部分,只需选择要删除的项,而不是选择为整个数据库编写脚本。

票数 86
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8439650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档