如何删除名称以给定字符串开头的所有表?
我认为这可以通过一些动态 SQL 和 INFORMATION_SCHEMA
表来完成。
原文由 Blorgbeard 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何删除名称以给定字符串开头的所有表?
我认为这可以通过一些动态 SQL 和 INFORMATION_SCHEMA
表来完成。
原文由 Blorgbeard 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您的查询返回多行,您可以收集结果并将它们合并到一个查询中。
declare @Tables as nvarchar(max) = '[schemaName].['
select @Tables =@Tables + TABLE_NAME +'],[schemaName].['
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_SCHEMA = 'schemaName'
AND TABLE_NAME like '%whateverYourQueryIs%'
select @Tables = Left(@Tables,LEN(@Tables)-13) --trying to remove last ",[schemaName].[" part, so you need to change this 13 with actual lenght
--print @Tables
declare @Query as nvarchar(max) = 'Drop table ' +@Tables
--print @Query
exec sp_executeSQL @Query
原文由 Arthur Cam 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
800 阅读
如果数据库中有多个所有者,您可能需要修改查询以包含所有者。
这比使用生成脚本加运行的两步方法更干净。但是脚本生成的一个优点是它使您有机会在实际运行之前查看将要运行的全部内容。
我知道如果我要针对生产数据库执行此操作,我会尽可能小心。
编辑 代码示例已修复。