如何从db中删除所有表?无法从sys.tables中删除

Shi*_*mmy 6 sql-server adhoc sys sql-server-2008 sql-server-2008r2-express

如何以任何方式执行此查询:

delete from sys.tables where is_ms_shipped = 0
Run Code Online (Sandbox Code Playgroud)

发生了什么,我执行了一个非常大的查询,我忘了把USE指令放在它上面,现在我在我的主数据库上有一个数以万计的表,并且不想一个一个地删除它们.

更新:这是一个全新的数据库,所以我不必关心任何以前的数据,我想要实现的最终结果是将主数据库重置为工厂出货.

Phi*_*unt 7

如果这是一次性问题,请使用SQL Server Management Studio删除表.

如果你必须非常小心地运行脚本,请使用:

EXEC sp_msforeachtable 'DROP TABLE ?'
Run Code Online (Sandbox Code Playgroud)

  • @Shimmy - 你不能只是在循环中运行脚本,直到没有更多的表为止?`WHILE EXISTS(SELECT*from sys.tables where is_ms_shipped = 0)EXEC sp_MSforeachtable'DROP TABLE?'` (2认同)

Shi*_*mmy 1

我所做的最简单、最短的方法是:

如何在 SQL Server 2008 中重建系统数据库

这里所有其他答案的问题是它不起作用,因为有相关的表并且它拒绝执行。

这个不仅有效,而且实际上就是我正在寻找的:“重置为出厂默认设置”,如问题中所述。
此外,这将删除所有内容,而不仅仅是表。