小编典典

删除SQL Server数据库中的所有表(少数几个除外)

sql

我的数据库中现在有大约50多个表,我想要删除的是数据库中的所有表,除了少数几个。

现在我知道的sys.tables是一个列出所有表的表,所以最初我运行了这样的查询

delete from sys.tables where name like '%DynamicSurgery' (or any other condition)

认为它可能会起作用。但正如我预期的那样,它会抛出一个错误

不允许对系统目录进行临时更新。

请告诉我,是否有一种方法可以删除SQL Server中的倍数?


阅读 263

收藏
2021-04-22

共1个答案

小编典典

您可以DROP对所需的表使用动态查询:

DECLARE @ExecSQL AS NVARCHAR (MAX) = '';

SELECT @ExecSQL = @ExecSQL + 
    'DROP TABLE ' + QUOTENAME(S.name) + '.' + QUOTENAME(T.name) + '; ' 
FROM sys.tables T
JOIN sys.schemas S ON S.schema_id = T.schema_id
WHERE T.name LIKE '%DynamicSurgery'

--PRINT @ExecSQL
EXEC (@ExecSQL)
2021-04-22