Update from Sync Service

This commit is contained in:
FNS Service
2026-04-21 21:15:34 +08:00
parent e927b9c998
commit ff2dc5b648
2 changed files with 103 additions and 58 deletions

View File

@@ -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. **分批执行**:大量删除时分批进行,避免锁表时间过长
---
> ⚠️ **警告**:此操作不可逆,执行前务必确认!