我正在使用sql-server 2005.最初,出于学习目的,我创建了许多表,现在我想删除所有那些表,除了当前我正在处理的表.是否有任何代码或查询可以从我的数据库中删除所有表,除了一个有用的表.我认为的一种方法是将该表复制到新的数据库使用SELECT INTO...子句并删除该数据库,但不知道这是解决此问题的好方法.
如果表格不是很大,我可能只需在SSMS的"对象资源管理器详细信息"窗口中选择它们,然后点击删除.
对于您可以使用的程序化解决方案
EXEC sys.sp_MSforeachtable
N'IF OBJECT_ID(''?'') <> OBJECT_ID(''dbo.YourTableToKeep'')
DROP TABLE ?
'
Run Code Online (Sandbox Code Playgroud)
两种方法都可能需要重复运行才能删除FK关系中涉及的所有表(如果另一个表具有引用它的FK,则无法删除表).
小智 6
您可以使用sql创建所需的所有drop staments.例如下一个sql查询
USE [MyDatabase];
GO
SELECT
replace(
replace('DROP TABLE [{Schema}].[{TableName}];'
,'{Schema}',TABLE_SCHEMA)
,'{TableName}',TABLE_NAME)
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME NOT IN ('TableNameOne','TableNameTwo')
Run Code Online (Sandbox Code Playgroud)
并获得执行查询的结果.
复制查询的第一列并将其粘贴到新的查询窗口中.
人们很容易看到,你得到下降staments的列表除了"TableNameOne"和"TableNameTwo",所有表...
我觉得这很简单......