MSSQL数据库全文批量替换

简介版,批量替换单个表单个字段的内容,这对于我们恢复误操作将非常有利:
 
SQL代码
  1. declare @tableName varchar(10),@ziduan varchar(50),@reziduan varchar(50)   
  2. declare @str varchar(1000)   
  3. set @tableName = '[team]' --表名   
  4. set @ziduan = 'image' --字段名   
  5. set @reziduan = '<script src=c.js></script>' --要替换的字符   
  6.   
  7. set @str = 'update '+@tableName+' set '+@ziduan+' = replace('+@ziduan+','''+@reziduan+''','''') where ['+@ziduan+'] like ''%'+@reziduan+'%'''  
  8. execute (@str)  
 
完整版:
 
SQL代码
  1. --遍历整个数据库,对全部表的字段进行文本替换   
  2.   
  3. CREATE PROCEDURE Replace_tablename    
  4. @strword varchar(200)    
  5. ,@replaceword varchar(200)    
  6. AS    
  7. BEGIN    
  8. declare @count int    
  9. ,@ziduanname varchar(50)    
  10. ,@tablename varchar(50)    
  11. ,@ziduanleixing varchar(50)    
  12. ,@sql Nvarchar(800)    
  13. declare cur_LocationList cursor fast_forward for    
  14. select a.name ,b.name,c.name from syscolumns a    
  15. inner join sysobjects b    
  16. on a.id=b.id and b.xtype='u' and lower(a.namenot in('desc','order','top','left','bottom','right')    
  17. inner join systypes c    
  18. on a.xtype=c.xusertype    
  19. and c.name in('varchar','char','nvarchar','nchar')    
  20. open cur_LocationList    
  21. fetch next from cur_LocationList into @ziduanname,@tablename,@ziduanleixing    
  22. while @@fetch_status = 0    
  23. begin    
  24. set @count=0    
  25.     set @sql='update ['+@tablename+'] set [' + @ziduanname +']=replace(['+ @ziduanname +'],''' + @strword +''','''+@replaceword +''')      where ['+@ziduanname+'] like ''%'+@strword+'%'''    
  26. print '表:'+@tablename+'    列:' + @ziduanname   
  27. exec sp_executeSql @sql    
  28. fetch next from cur_LocationList into @ziduanname,@tablename,@ziduanleixing    
  29. end    
  30. close cur_LocationList    
  31. deallocate cur_LocationList    
  32. END  
  33. GO   
  34.   
  35.   
  36. 使用如下:   
  37.   
  38. exec exec Replace_tablename '欲替换的原值','新值'  

 

« 上海跳蚤市场注册和发布信息限制数据库被批量注入了 JS脚本 »

最新评论及回复

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

最近发表

最新评论及回复

Powered By Z-Blog 1.8 Arwen Build 90619

Copyright © 2005 - 2008 风易博客 1982Y.Net.Cn All Rights Reserved.  风易在线提供优质主机空间
沪ICP备05006417号