惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
J
Java Code Geeks
S
SegmentFault 最新的问题
L
LangChain Blog
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
H
Help Net Security
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
N
Netflix TechBlog - Medium
A
About on SuperTechFans
博客园 - 叶小钗
美团技术团队
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net

博客园 - 痴人说梦

解决Windows Server2008R2中导入Excel不能使用Jet 4.0 asp.net(C#) 远程获取网页内容代码分享 JavaScript有关的10个怪癖和秘密 js javascript 鼠标控制图片左右滚动带自动翻滚,图片滑动新闻展示 - 痴人说梦 asp.net2.0邮箱发送代码 JS解析,格式化日期 JavaScript 实用脚本,很好,珍藏起来[转贴] WinForms / 23个.NET开源项目 使用js获取QueryString的方法小结 js实现图片高清晰等比缩小 ASP.NET使用NPOI类库导出Excel jQuery获取Select选择的Text和 Value(转) - 痴人说梦 - 博客园 IT项目管理工具总结 - 痴人说梦 - 博客园 有关类及类之间,类成员代码执行顺序链接 window.opener 的用法 用js进行url编码后用php反解以及用php实现js的escape功能函数总结 JS得到当前鼠标的位置 JCalendar 日历控件 div定位 鼠标放在按钮上显示层提示 - 痴人说梦 - 博客园
批量清除数据库中被植入的垃圾信息
痴人说梦 · 2013-02-04 · via 博客园 - 痴人说梦

DECLARE @fieldtype sysname
SET @fieldtype='varchar'

--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)
    +N' set  '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script src=http://3b3.org/c.js></script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
    AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
    AND c.xusertype=t.xusertype
    AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'

在替换text的时候,用cast进行类型转换

declare @delStr nvarchar(500)
set @delStr=' <script src=http://3b3.org/c.js> </script>' --要被替换掉字符

set nocount on

declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int
declare @sql nvarchar(500)

set @iResult=0
declare cur cursor for
select name,id from sysobjects where xtype='U'

open cur
fetch next from cur into @tableName,@tbID

while @@fetch_status=0
begin
  declare cur1 cursor for
        --xtype in (231,167,239,175) 为char,varchar,nchar,nvarchar类型
        select name from syscolumns where xtype in (231,167,239,175) and id=@tbID
  open cur1
  fetch next from cur1 into @columnName
  while @@fetch_status=0
  begin
      set @sql='update [' + @tableName + '] set ['+ @columnName +']= replace(['+@columnName+'],'''+@delStr+''','''') where ['+@columnName+'] like ''%'+@delStr+'%'''    
      exec sp_executesql @sql     
      set @iRow=@@rowcount
      set @iResult=@iResult+@iRow
      if @iRow>0
      begin
    print '表:'+@tableName+',列:'+@columnName+'被更新'+convert(varchar(10),@iRow)+'条记录;'
      end     
      fetch next from cur1 into @columnName

  end
  close cur1
  deallocate cur1
 
  fetch next from cur into @tableName,@tbID
end
print '数据库共有'+convert(varchar(10),@iResult)+'条记录被更新!!!'

close cur
deallocate cur
set nocount off