如何删除名称以给定字符串开头的所有表?
我认为这可以通过一些动态 SQL 和INFORMATION_SCHEMA表来完成。
INFORMATION_SCHEMA
如果数据库中有多个所有者,您可能需要修改查询以包含所有者。
DECLARE @cmd varchar(4000) DECLARE cmds CURSOR FOR SELECT 'drop table [' + Table_Name + ']' FROM INFORMATION_SCHEMA.TABLES WHERE Table_Name LIKE 'prefix%' OPEN cmds WHILE 1 = 1 BEGIN FETCH cmds INTO @cmd IF @@fetch_status != 0 BREAK EXEC(@cmd) END CLOSE cmds; DEALLOCATE cmds
这比使用生成脚本加运行的两步方法更干净。但是脚本生成的一个优点是它使您有机会在实际运行之前查看将要运行的全部内容。
我知道如果我要针对生产数据库执行此操作,我会尽可能小心。
编辑 代码示例已修复。