Update from Sync Service
This commit is contained in:
@@ -1,55 +1,58 @@
|
||||
--创建临时表
|
||||
```sql
|
||||
create table #Man(
|
||||
```
|
||||
id int identity(1,1),
|
||||
tbName nvarchar(50)
|
||||
) --往临时表插入数据
|
||||
```sql
|
||||
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
|
||||
# 循环批量删除数据库表
|
||||
|
||||
--确认
|
||||
```sql
|
||||
select * from #Man
|
||||
> SQL Server 批量删除指定条件的表
|
||||
|
||||
```
|
||||
commit
|
||||
rollback
|
||||
begin tran
|
||||
|
||||
|
||||
--定义循环变量
|
||||
```sql
|
||||
declare @i int
|
||||
set @i = 1
|
||||
declare @count int
|
||||
select @count = count(*) from #Man
|
||||
|
||||
```
|
||||
--print @count
|
||||
## 存储过程
|
||||
|
||||
```sql
|
||||
declare @str nvarchar(500)
|
||||
declare @tb nvarchar(50)
|
||||
-- 创建临时表存储表名
|
||||
CREATE TABLE #Man (
|
||||
id INT IDENTITY(1,1),
|
||||
tbName NVARCHAR(50)
|
||||
)
|
||||
|
||||
```
|
||||
while(@i <= @count) begin
|
||||
-- 插入要删除的表名(排除保留表)
|
||||
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
|
||||
|
||||
```sql
|
||||
select @tb = isnull(tbName, '') from #Man where id = @i
|
||||
```
|
||||
--循环执行语句
|
||||
```sql
|
||||
set @str = 'drop table [' + @tb+ ']'
|
||||
```
|
||||
exec(@str)
|
||||
-- 确认要删除的表
|
||||
SELECT * FROM #Man
|
||||
|
||||
```sql
|
||||
set @str = ''
|
||||
set @i = @i + 1
|
||||
-- 开始删除
|
||||
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
|
||||
```
|
||||
end
|
||||
|
||||
---
|
||||
|
||||
## 安全建议
|
||||
|
||||
1. **先 SELECT 确认**:删除前先只 SELECT,确认无误再执行 DELETE
|
||||
2. **排除保留表**:一定要排除系统表和重要业务表
|
||||
3. **备份**:生产环境先备份再执行
|
||||
4. **分批执行**:大量删除时分批进行,避免锁表时间过长
|
||||
|
||||
---
|
||||
|
||||
> ⚠️ **警告**:此操作不可逆,执行前务必确认!
|
||||
|
||||
Reference in New Issue
Block a user