我的数据库中现在有大约50多个表,我想要删除的是数据库中的所有表,除了少数几个。
现在我知道的sys.tables是一个列出所有表的表,所以最初我运行了这样的查询
sys.tables
delete from sys.tables where name like '%DynamicSurgery' (or any other condition)
认为它可能会起作用。但正如我预期的那样,它会抛出一个错误
不允许对系统目录进行临时更新。
请告诉我,是否有一种方法可以删除SQL Server中的倍数?
您可以DROP对所需的表使用动态查询:
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)