1.2 KiB
Executable File
1.2 KiB
Executable File
循环批量删除数据库表
SQL Server 批量删除指定条件的表
存储过程
-- 创建临时表存储表名
CREATE TABLE #Man (
id INT IDENTITY(1,1),
tbName NVARCHAR(50)
)
-- 插入要删除的表名(排除保留表)
INSERT INTO #Man
SELECT name
FROM sys.tables
WHERE create_date <= '2018-03-10 15:36:35.687'
AND name NOT IN ('DeviceNetState', 'EphInfo', 'FilterStatistic', 'UserInfo', 'AlmInfo')
ORDER BY create_date DESC
-- 确认要删除的表
SELECT * FROM #Man
-- 开始删除
DECLARE @i INT = 1
DECLARE @count INT
SELECT @count = COUNT(*) FROM #Man
DECLARE @str NVARCHAR(500)
DECLARE @tb NVARCHAR(50)
WHILE (@i <= @count)
BEGIN
SELECT @tb = ISNULL(tbName, '') FROM #Man WHERE id = @i
SET @str = 'DROP TABLE [' + @tb + ']'
EXEC(@str)
SET @i = @i + 1
END
-- 清理临时表
DROP TABLE #Man
安全建议
- 先 SELECT 确认:删除前先只 SELECT,确认无误再执行 DELETE
- 排除保留表:一定要排除系统表和重要业务表
- 备份:生产环境先备份再执行
- 分批执行:大量删除时分批进行,避免锁表时间过长
⚠️ 警告:此操作不可逆,执行前务必确认!