declare tb_name cursor for select NAME,ID from sysobjects WHERE TYPE='U' --得到用户表的ID
declare @in_char varchar(20)
set @in_char='%<script>%'
---查找注入字符串
declare @tj varchar(5000)
set @tj=' where '
declare @i int
set @i=0
declare @sql varchar(200)
DECLARE @table_name varchar(50)
DECLARE @table_id varchar(50)
DECLARE @feild_name varchar(50)
DECLARE @fd_count int
open tb_name
FETCH next FROM tb_name into @table_name,@table_id
while
@@FETCH_STATUS=0
begin
set @i=0
declare fd_name cursor for SELECT NAME FROM syscolumns
where id=@table_id and type=39 group by name--得到用户表某一ID的所有字符类型字段名称
open fd_name
FETCH next FROM fd_name into @feild_name
print @fd_count
while
@@FETCH_STATUS=0
begin
set @i=@i+1
set @tj=@tj+@feild_name +' like '''+ @in_char +'''' +(case when (SELECT count(type) as fd_count FROM syscolumns
where id=@table_id and type=39)
>@i then ' or ' else ' 'end)
FETCH next FROM fd_name into @feild_name
end
-- print @tj
if @tj!=''
begin
SET @SQL='DELETE FROM '+@TABLE_NAME+@TJ
print '切记先运行代码看print 出来的SQL确认后再删除数据,即将运行的代码是 '
print '===================================================================='
print @SQL
print '===================================================================='
--切记先运行代码看print 出来的SQL确认后再删除数据
exec(@sql) --修改注释后删除数据
end
set @tj=''
CLOSE fd_name
deallocate fd_name
FETCH next FROM tb_name into @table_name,@table_id
end
close tb_name
deallocate tb_name
要对大批量的数据进行修改,最好使用批量UPDATE查询来提高效率。具体的做法是使用UPDATE语句更新数据库表中的多行数据。以下是一般情况下建议使用的UPDATE查询:
1. 使用WHERE子句筛选需要更新的数据,避免无意义的更新 *** 作,提高效率。
2. 如果涉及多个表或者复杂的逻辑关系,可以采用JOIN语句将多个表连接起来进行更新。
3. 对于更新内容较多的情况,可以考虑使用批量更新,即一次性更新多条记录,提高效率。
4. 在更新 *** 作之前,最好事先备份相关的数据,以防止误 *** 作导致数据丢失。
需要注意的是,对于大批量的数据更新,可能会对数据库的性能产生影响,所以在进行更新 *** 作时,需要对数据库的配置和性能进行综合评估,保证系统的稳定性和可靠性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)