MSSQL数据库全库批量替换
生活随笔
收集整理的這篇文章主要介紹了
MSSQL数据库全库批量替换
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近因為某同學(xué)以前做的一Asp站點被攻擊掛馬,所以叫我?guī)兔z查一下,發(fā)現(xiàn)是被SQL注入所致.這些壞人把數(shù)據(jù)庫文本型的字段都加了一段js調(diào)用的代碼.
于是需要批量替換掉,可以用游標(biāo)的系統(tǒng)存儲過程 sp_MSforeach_Worker 處理
批處理SQL腳本如下
DECLARE?@fieldtype?sysname
SET?@fieldtype='nvarchar'
--?@filedtype?的值可以為?varchar?和?nvarchar?
--?西狐注
DECLARE?hCForEach?CURSOR?GLOBAL
FOR
SELECT?N'update?'+QUOTENAME(o.name)
????+N'?set??'+?QUOTENAME(c.name)?+?N'?=?replace('?+?QUOTENAME(c.name)?+?',''<script?src=http://木馬網(wǎng)站/0.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'?'
此同學(xué)的MSSQL數(shù)據(jù)為2000版本.其它版本未做過測試
哎順便感嘆一下那些掛木馬的大哥們怎么這么沒有人道啊.
于是需要批量替換掉,可以用游標(biāo)的系統(tǒng)存儲過程 sp_MSforeach_Worker 處理
批處理SQL腳本如下
DECLARE?@fieldtype?sysname
SET?@fieldtype='nvarchar'
--?@filedtype?的值可以為?varchar?和?nvarchar?
--?西狐注
DECLARE?hCForEach?CURSOR?GLOBAL
FOR
SELECT?N'update?'+QUOTENAME(o.name)
????+N'?set??'+?QUOTENAME(c.name)?+?N'?=?replace('?+?QUOTENAME(c.name)?+?',''<script?src=http://木馬網(wǎng)站/0.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'?'
此同學(xué)的MSSQL數(shù)據(jù)為2000版本.其它版本未做過測試
哎順便感嘆一下那些掛木馬的大哥們怎么這么沒有人道啊.
總結(jié)
以上是生活随笔為你收集整理的MSSQL数据库全库批量替换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何创建透明窗体?
- 下一篇: 从Windows到Linux